1.sizeof是操作符,不是函数。
2.sizeof求函数的长度
void func()
{
}
int main(void)
{
printf ("%lu\n", sizeof(func())); //1
return 0;
}
int func()
{
}
int main(void)
{
printf ("%lu\n", sizeof(func())); //4
return 0;
}
3.sizeof能求得静态分配数组的大小
int a[10];
sizeof(a) // 10
注意对函数形参使用sizeof情况
void func(int a[10])
{
sizeof(a); //8 函数参数传递时,数组被转化成了指针
}
4.sizeof不能求得动态分配内存的大小
int *p = new int[10];
sizeof(p); // 4
5.不能对不完全的数组求长度
int a[];
sizeof(a) //编译报错
6.当表达式作为sizeof操作数时,它返回表达式计算类型的大小,但是它不对表达式求值
char ch=1
int num=4
int n1 = sizeof(ch+num) // 4
int n2 = sizeof(ch=ch+num) // 1
int num = 3;
int a[] = {0, 1, 2, 3, 4, 5, 6};
printf ("%lu:%d\n", sizeof(a[++num]), num); // 4:3
7.sizeof可以对函数调用求大小,求得的大小等于函数返回类型的大小,但是不执行函数体
阅读(447) | 评论(0) | 转发(0) |