sizeof 一个求字节的运算符 sizeof (x) 用来求x类型所占的字节数,x可以是一个对象也可以是一个数据类型 int a ; sizeof(a) || sizeof(int) sizoef(x)运算 先求出x的数据类型,再求出该类型的所占字节数 sizeof(1) => sizeof(typeof(1)) = > sizeof(int) == 4
1.sizeof(指针类型) == 机器字长
机器字长:(32位操作系统(32bit机器)) 机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。 在32位的机器下 int *p = NULL; char *p2 = "12345"; sizeof(p) => sizeof(typeof(p)) => 4 sizeof(p2) => sizeof(char *) =>42.sizeof(x) :x对象可以是不存在的,但是要知道x的类型
int *p = NULL; sizeof(*p)=>4 /******************************/ char *** p3; sizeof(p3) == 4 sizeof(*p3) == 4 sizeof(**p3) == 4 sizeof(***p3) == 13.求数组的大小 注意数组名代表的是什么
int a[100]; sizeof(a) =>sizeof(int [100]) =>4*100=400 //代表整个数组 sizeof(a[1024]) =>sizeof(int) =>4 //即使1024位不存在,但我们知道他的类型为int char *p[4] sizeof(p) => sizeof(typeof(p)) => sizeof(int * [4]) =>4*4 = 16 在函数调用中! int b[100]; void func(int b[100]) { sizeof(b) => 4 //当数组名当作函数的参数时,是看成一个指针,它指向了数组的第一个数(int * 类型) } int a[3][4]; void func_xx(int a[][4], int n) { sizeof(a) == ? 4 (1) typeof(a) 数组名作函数的参数,当指针来看 a <=> &a[0] typeof(&a[0]) => typeof(a[0])* => int[4] * (2)sizeof(int[4]*) == 4 }4.默认类型
整数 : int =》4 浮点数: double =》8 sizeof(1.0) == 8 //double类型 占8字节 short s; sizeof(s + 4) == 4 //s隐式转换 sizeof(s + 1.0f) == 4 //+f 为 float类型占4个字节大小空间 类型 byte char 1 short 2 int 4 float 4 double 8 long 4 long long 8