Modificando una matriz en una función 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; } } 

El problema es que quiero modificar la matriz en la función array_tester pero no puedo hacerlo. ¿Qué uso dentro de sizeof() ?

Tienes que pasar manualmente la información sobre el tamaño de la matriz.

 void array_tester( int* array , int size ) ; 

Y luego llámalo:

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

La razón detrás de esto es que la matriz pasada a una función decaerá a un puntero y la sizeof devolverá el tamaño del puntero no la matriz original.