2016-05-22 57 views
-3
int *a[4] = { 
    (int[]){ 1}, 
    (int[]){ -4, -5}, 
    (int[]){ -4, -5, 0}, 
    (int[]){ 1, 3, 4, 6} 
}; 

for (i = 0; i < 4; i++) 
    len = sizeof(a[i])/sizeof(int); 

我知道這不是一個正確的方法,但len總是2.有人可以解釋爲什麼len是兩個嗎?它是一個未定義的行爲,如果不是,它是如何計算的?len的數組總是2

+1

如果您的代碼中沒有多維數組。 – Olaf

+1

是的,它是指針數組。我自己將問題標記爲要刪除。 –

+0

您不需要將自己的問題標記爲要刪除,相反,您可以選擇將其刪除,因爲您是問題的作者。 –

回答

4

a[i]是指向int的指針。 sizeof(a[i])將返回sizeof int *,而不是它指向的數組。在64位機器上,指針的大小爲8字節,而int的大小爲4字節。 8/4 = 2

+1

哦,你好。很簡單。我不是爲什麼它讓我感到頭疼。不管怎麼說,多謝拉。 –