sizeof是关键字,不是函数调用。
1、指针的 sizeof
只要是指针,大小就是4(对32位机来说)
2、unsigned 类型的sizeof
unsigned影响的只是最高位bit的意义(正/负),数据长度是不会被改变的。sizeof(unsigend int) = sizeof(int)
3、自定义类型的sizeof
等于它的类型原型
4、函数的sizeof
在编译阶段会被函数返回值的类型取代。
5、数组的sizeof
sizeof(数组) = 维数乘积 * sizeof(类型)
//
// sizeof.c
//
#include <stdio.h>
int b[100];
void fun(int b[100])
{
printf("fun::sizeof(b) = %d\n", sizeof(b));
}
int main()
{
int * p = NULL;
int a[100];
printf("sizeof(p) = %d\n", sizeof(p));
printf("sizeof(*p) = %d\n", sizeof(*p));
printf("sizeof(a) = %d\n", sizeof(a));
printf("sizeof(a[100]) = %d\n", sizeof(a[100]));
printf("sizeof(&a) = %d\n", sizeof(&a));
printf("sizeof(&a[0]) = %d\n", sizeof(&a[0]));
fun(a);
return 0;
}
运行结果: