關於各種類型的sizeof

 

關鍵字:指針的sizeof總爲4.


下面一段代碼:



char str[ ]= ”Hello”;
char *p=str;
int n=10;

sizeof(str)=( 6 )
sizeof(p)=( 4 )
sizeof(n)=( 4 )



void func(char str[100])
{ }
sizeof(str)=( 4 )
typedef struct Link

{

   char a;

   int b;

};

struct Link mytest[4];

sizeof(mytest)=(32); //即4*結構體大小

怎麼算出來的~??

+================================================+

解釋如下

+================================================+



首先,str是數組,sizeof (str) = 6,因爲str含有6個元素,所以是6個字節,注意,sizeof "數組"表示的是整個數組索佔有的字節數。


而p是指針,注意,sizeof "指針" ,無論這個指針指向的是什麼,結果都是4,因爲一個指針所佔有的字節數是4,sizeof "指針"表示的是,指針所佔有的字節數。


第三個沒什麼好說的,sizeof "整數",在32位機器上,結果就是4。
最後一個也很好,當傳遞的函數參數是一個數組時,其實只是傳遞的指針,也就是說,即使我們傳遞的是數組,但實際上也是把它當作指針對待的,所以sizeof(str)是4

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