可能重複:
How to find the sizeof(a pointer pointing to an array)C,malloc()和數組長度
我正在學習如何創造下的動態數組,但所遇到的問題,我可以不知道。
如果我使用的代碼:
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()
時。
'num'是第二種情況下指向int的指針,其大小取決於機器,即對於32位,它是4字節,對於64位,它是8字節。而在第一種情況下,num不是指針,它是'base數組的地址'sizeof()'給出數組的總大小。 。 – krpra