Bonjour,

J'ai un problème récurent:

Dans mon cours, il est dit qu'il est possible de travailler avec des pointeurs mêmer pour des tableaux à plusieurs dimensions pour obtenir toutes les valeurs du tableau par incrémentation du pointeur auquel on a affecté la valeur du tableau (début de l'emplacement mémoire), car le poiteur était converti dans le type "type*".

A chaque compilation sous visual C++, le message suivant apparait:

c:\users\yonathan\documents\visual studio 2005\projects\40\40\source.cpp(17) : error C2664: 'somme'*: impossible de convertir le paramètre 1 de 'float [2][3]' en 'float *'
1> Aucun contexte dans lequel cette conversion est possible

Voici le code du programme qui est censé renvoyer la somme des élements d'un tableau fourni en argument:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
#include <stdio.h>
 
void main()
{
	float somme (float * t, int i, int j);
 
	int i, j;
	float t [2][3] = {1, 2, 3, 4, 5, 6};
 
	for (i=0; i<2; i++)
		for (j=0; j<3; j++)
		{
			printf("entrez valeur");
			scanf("f", &t[i][j]);
 
		}
	somme(t, i, j);
}
 
float sommme (float * t, int i, int j)
{
	int nbr = i*j, k;
	float somme;
 
	int * adt;
	adt = (float *) t;
 
	for (k=0; k<nbr; k++)
		somme += *(adt + k);
 
	printf("somme : %f", somme);
 
}