Bonjour a tous,
j'ai des questions sur les pointeurs et les tableaux multi dimension, et j'ai cherché déjà sur plusieurs forums, et je crois que cela m'a perdu encore plus qu'avant 
j'ai une question simple, mais je n'ai pas trouvé de reponse claire encore...
j'aimerai par exemple écrire (en C) une fonction générique qui affiche une matrice :
void display(double **array, int dimx, int dimy)
et si je veux la tester, je cree une matrice de test comme ca :
double A[2][3] = {{0 ,1 ,2}, {3, 4, 5}};
et la je ne sais pas comment passer ma matrice à ma fonction 
je sais que si je mets ca, ca ne marche pas :
1 2 3 4
|
display(A); // a priori ca serait l'adresse du premier élément de A?
display(&A[0][0]); // autre formulation de l'adresse du 1er elt ?
display(&A[0]); |
Je ne suis pas sur, peut-etre est-ce du a une confusion entre C et C++, mais je ne sais pas trop si
1 2 3
| A[i][j] = *( *(A+i) +j)
ou si
A[i][j] = *( A+i*dimx +j) |
je sais qu'un raisonnement de ce type fonctionnerait avec des tableaux de taille 1, on peut ecrire
1 2 3 4
|
void display(double *array1D, int dim);
double A[3] = {0 ,1 ,2};
display(A,3); |
mais qu'est-ce qui change quand on passe en dimension superieure ?
Autrement dit quel est le type de A dans :
double A[2][3] = {{0 ,1 ,2}, {3, 4, 5}};
????
enfin du coup comment je peux créer un prorotype de fonction en C pour afficher A, qqchose qui me permettre de faire :
1 2 3 4
| double A[2][3] = {{0 ,1 ,2}, {3, 4, 5}};
double B[2][2] = {{0 ,1}, {3, 4}}
display(A,2,3);
display(B,2,2); |
j'imagine que ma question a été posée moulte fois, mais a ce que j'ai compris (ou pas compris plutôt...) il y a des différences d’interprétation par le compilateur suivant qu'on est en C ou en C++, et je suis complètement perdu la....
merci beaucoup pour votre aide a tous ^^
Partager