首先我们必须知道,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是一个关键字,而不是一个函数。
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()不能再外部函数里面使用的原因。
3、int arr[10];
因为sizeof()是一个关键字 所以这两种方式都是正确的
sizeof arr;
sizeof(arr);
但是:
sizeof(int) 正确
sizeof int 错误
这是因为int也是一个关键字,所以两个关键字放在一起,会产生语法错误。
时间: 2024-11-06 12:06:08