面試題:sizeof

一、

int main()

{

int **a[3][6];

printf("%d\n",sizeof(a));

printf("%d\n",sizeof(*a));

printf("%d\n",sizeof(**a));

printf("%d\n",sizeof(***a));

printf("%d\n",sizeof(****a));

return 0;

}

輸出結果:3*6*4 = 72、6*4 = 24、4、4、4;

分析:int **a[3][6] 首先a是二維數組的數組名,二維數組的各個元素爲“指向整型指針的指針”sizeof(a)指的是整個數組在內存所佔據的空間3*6*4中的3是3行、6指的是6列、4指的是每個元素(指針)所佔據的空間(需要所名的是32位處理器上不管什麼類型的指針都佔4個字節),共計佔據72個字節;sizeof(*a)指的是第一行六個元素(指針)所佔據的空間;sizeof(**a)指的是第一行中第一個元素(指針)所佔據的空間;sizeof(***a)指的是第一行中第一個元素(指針)所指向的指針,其實還是一個指針所佔據的空間;sizeof(****a)指的是第一行第一個元素所指向的指針所指向的那個整型值,也就是sizeof(int)的值即爲4;如果指向的是字符型指針的指針那麼sizeof(****a)=1;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章