首先咱们必须知道,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也是一个关键字,因此两个关键字放在一块儿,会产生语法错误。