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 :cry:
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 :
et si je veux la tester, je cree une matrice de test comme ca :Code:void display(double **array, int dimx, int dimy)
et la je ne sais pas comment passer ma matrice à ma fonction :(Code:double A[2][3] = {{0 ,1 ,2}, {3, 4, 5}};
je sais que si je mets ca, ca ne marche pas :
Je ne suis pas sur, peut-etre est-ce du a une confusion entre C et C++, mais je ne sais pas trop siCode:
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 sais qu'un raisonnement de ce type fonctionnerait avec des tableaux de taille 1, on peut ecrireCode:
1
2
3 A[i][j] = *( *(A+i) +j) ou si A[i][j] = *( A+i*dimx +j)
mais qu'est-ce qui change quand on passe en dimension superieure ?Code:
1
2
3
4 void display(double *array1D, int dim); double A[3] = {0 ,1 ,2}; display(A,3);
Autrement dit quel est le type de A dans :
????Code: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 :
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....Code:
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);
merci beaucoup pour votre aide a tous ^^