首先咱們必須知道,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; }
咱們能夠觀察到,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; }
這就是sizeof()不能再外部函數裏面使用的緣由。spa
三、int arr[10];orm
由於sizeof()是一個關鍵字 因此這兩種方式都是正確的blog
sizeof arr;內存
sizeof(arr);get
可是:it
sizeof(int) 正確
sizeof int 錯誤
這是由於int也是一個關鍵字,因此兩個關鍵字放在一塊兒,會產生語法錯誤。