天天看點

關鍵字sizeof()

首先我們必須知道,sizeof()是一個關鍵字而不是一個函數,這一點我們可以證明:

int main()
{
                 int a = 5;
                 short b = 3;
                printf( "%d\n", sizeof (b = a + 2));
                printf( "b=%d\n", b);
                system( "pause");
                 return 0;
}      
關鍵字sizeof()

我們可以觀察到,b的值沒有發生變化,是以sizeof是一個關鍵字,而不是一個函數。

2、sizeof()在主函數裡面使用,不能在在外部函數裡面使用。

例:

int  num_arr(int arr[])                        //形參arr其實是數組的首位址,是以對他求記憶體相當于對arr[0]求記憶體
{
                 int b = sizeof (arr);
                 return b;
}
int main()
{
                 int arr[10];
                 int ret=num_arr(arr);
                printf( "sizeof(arr)=%d\n", sizeof (arr));    //這個arrs是整個數組的位址,相當于&arr
                printf( "ret=%d\n", ret);
                system( "pause");
                 return 0;
}      
關鍵字sizeof()

這就是sizeof()不能再外部函數裡面使用的原因。

3、int arr[10];

因為sizeof()是一個關鍵字 是以這兩種方式都是正确的

sizeof arr;

sizeof(arr);

但是:

sizeof(int)  正确