關鍵字:指針的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