可能重复:
如何找到 sizeof(指向数组的指针)
我正在学习如何在 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()
.