Comment passer un tableau double à une fonction en C?

J’ai essayé de résoudre ce problème toute la journée:

Comment passer un tableau double à une fonction?

Voici un exemple:

int masortingx[5][2] = { {1,2}, {3,4}, {5,6}, {7,8}, {9,10} }; 

Et je souhaite passer cette masortingce à la fonction nommée eval_masortingx ,

 void eval_masortingx(int ?) { ... } 

Je ne peux pas comprendre ce qui devrait être à la place de ?

Quelqu’un peut-il m’aider avec ce problème?

Je sais qu’un tableau peut être passé comme un pointeur, mais qu’en est-il d’un tableau double (ou sortingple tableau?)

Merci, Boda Cydo.

Pour être utilisable en tant que tableau, le compilateur doit connaître la foulée interne du tableau, il faut donc:

 void eval_masortingx( int m[5][2] ) { ... 

ou:

 void eval_masortingx( int m[][2], size_t od ) { ... /* od is the outer dimension */ 

ou juste:

 void eval_masortingx( int* p, size_t od, size_t id ) { ... /* ditto */ 

Dans tous les cas, c’est du sucre syntaxique – le tableau est décomposé en un pointeur.

Dans les deux premiers cas, vous pouvez référencer les éléments d’un tableau comme d’habitude m[i][j] , mais vous devrez compenser manuellement dans le troisième cas comme p[i*id + j] .

Vous ne devriez pas passer la masortingce entière, mais plutôt le pointeur. Cependant, vous devriez aussi passer la taille … c’est comme cela que je le ferais, en supposant qu’il s’agisse toujours de paires [2].

 struct pair { int a, b; }; struct pair masortingx[] = { {1,2}, {3,4}, {5,6}, {7,8}, {9,10} }; void eval_masortingx(struct pair *masortingx, size_t masortingx_size) { ... } eval_masortingx(masortingx, sizeof(masortingx) / sizeof(struct pair);