Cで動的配列を作成する方法を学んでいますが、理解できない問題に遭遇しました。
コードを使用する場合:
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]));
出力を取得します:
sizeof num = 40
sizeof num[0] = 4
これは私が起こることを期待していることです。ただし、配列のサイズを次のように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]));
次に、出力を取得します。
sizeof num = 8
sizeof num[0] = 4
固定長メソッドを使用した場合に配列のサイズが40である理由を知りたいのですが、を使用した場合はそうではありませんmalloc()
。