關鍵字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;
}

spacer.gif

wKioL1bxXJux-lyqAABWdiyLthg615.png

咱們能夠觀察到,b的值沒有發生變化,因此sizeof是一個關鍵字,而不是一個函數。ide

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

例:url

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;
}

spacer.gifwKioL1bxXPiTQRwPAABVRkcLR6k738.png

這就是sizeof()不能再外部函數裏面使用的緣由。spa

三、int arr[10];orm

由於sizeof()是一個關鍵字 因此這兩種方式都是正確的blog

sizeof arr;內存

sizeof(arr);get

可是:it

sizeof(int)  正確

sizeof int        錯誤

這是由於int也是一個關鍵字,因此兩個關鍵字放在一塊兒,會產生語法錯誤。

相關文章
相關標籤/搜索