C, Malloc () und Arraylänge [duplizieren]
Mögliche Duplikate:
So finden Sie die sizeof (ein Zeiger auf ein Array)
Ich lerne, wie man ein dynamisches Array in C erstellt, bin aber auf ein Problem gestoßen, das ich nicht herausfinden kann.
Wenn ich den Code verwende:
int num[10];
for (int i = 0; i < 10; i++) {
num[i] = i;
}
printf("sizeof num = %li\n sizeof num[0] = %li", sizeof(num), sizeof(num[0]));
Ich bekomme die Ausgabe:
sizeof num = 40
sizeof num[0] = 4
Das ist es, was ich erwarten würde. Allerdings, wenn ich die Größe des Arrays wie malloc:
int *num;
num = malloc(10 * sizeof(int));
for (int i = 0; i < 10; i++) {
num[i] = i;
}
printf("sizeof num = %li\n sizeof num[0] = %li", sizeof(num), sizeof(num[0]));
Dann bekomme ich die Ausgabe:
sizeof num = 8
sizeof num[0] = 4
Ich bin gespannt, warum die Größe des Arrays 40 ist, wenn ich die Methode mit fester Länge verwende, aber nicht, wenn ich sie verwendemalloc()
.