Modification d’un tableau dans une fonction en C

#include  #include  void array_tester(int *array); int main(int argc,char *argv[]) { int test[] = {1,1,1,1}; int print; for(print = 0; print < sizeof(test) / sizeof(int); print++) { printf("%d\n",test[print] ); } array_tester(test); for(print = 0;print < sizeof(test)/sizeof(int);print++) { printf("%d\n",test[print] ); } return EXIT_SUCCESS; } void array_tester(int array[]) { int i ; for(i = 0; i < sizeof(array) / sizeof(int); i++) { array[i] = i; } } 

Le problème est que je veux modifier le tableau dans la fonction array_tester mais je suis incapable de le faire. Qu’est-ce que j’utilise à l’intérieur de sizeof() ?

Vous devez transmettre manuellement les informations sur la taille du tableau.

 void array_tester( int* array , int size ) ; 

Et puis appelez ça:

 array_tester( test , sizeof(test)/sizeof(*test) ) ; 

La raison derrière ceci est que le tableau transmis à une fonction se décompose en un pointeur et que sizeof renvoie la taille du pointeur et non celle du tableau d’origine.