Komplettes Beispiel:Warum hat ein C-Array einen falschen Wert für sizeof(), wenn es an eine Funktion übergeben wird?
#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;
}
Bevor es an eine Funktion, sizeof gibt mir den richtigen Wert. Wenn Sie genau dasselbe auf dem gleichen Array in der Funktion tun, erhalten Sie seltsame Ergebnisse. Es fehlt ein Element. Warum?
Wählerisch sein: Es ist ein Zeiger auf das erste Element des Arrays, das übergeben wird. Gleicher Wert, aber anderer Typ. – alk