Ejemplo completo:¿Por qué una matriz C tiene un valor de sizeof() incorrecto cuando se pasa a una función?
#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;
}
antes de pasarlo a una función, sizeof me da el valor correcto. Hacer exactamente lo mismo en la misma matriz en la función produce resultados extraños. Falta un elemento. ¿Por qué?
Para ser quisquilloso: Es un puntero al primer elemento de la matriz que se pasa. Mismo valor, pero diferente tipo. – alk