Esempio completo:Perché un array C ha un valore sizeof() errato quando viene passato a una funzione?
#include <stdio.h>
void test(int arr[]) {
int arrSize = (int)(sizeof(arr)/sizeof(arr[0]));
printf("%d\n", arrSize); // 2 (wrong?!)
}
int main (int argc, const char * argv[]) {
int point[3] = {50, 30, 12};
int arrSize = (int)(sizeof(point)/sizeof(point[0]));
printf("%d\n", arrSize); // 3 (correct :-))
test(point);
return 0;
}
Prima di passare ad una funzione, mi sizeof dà il valore corretto. Fare la stessa identica cosa sullo stesso array nella funzione dà risultati strani. C'è un elemento mancante. Perché?
Per essere pignoli: è un puntatore al primo elemento dell'array che viene passato. Stesso valore, ma di tipo diverso. – alk