#include <stdio.h>
int a[3] = {1,2,3};
void cal(int* item){
printf("Length(inside) is %lu\n", sizeof(item)/sizeof(item[0]));
}
int main(){
printf("Length(outside) is %lu\n", sizeof(a)/sizeof(int));
cal(a);
}
Der obige Code mit dem Ergebnis kommt, dassZählfeld Länge in c durch Zeiger, die Antwort ist falsch
Length(outside) is 3
Length(inside) is 2
Es ist jedoch falsch, weil beide 3 sein sollte, was ist los mit meinem Code?
Die Größe eines Zeigers ist die Größe des Zeigers, nicht was darauf zeigt. Wenn Sie die Länge des Arrays benötigen, müssen Sie es als Argument an die Funktion übergeben. –