1)sizeof不是函数,是运算符,是个类似宏定义的特殊关键字
sizeof()---括号内的内容在编译过程中是不被编译的,而是被替代
如:
1) int a = 8; sizeof(a);
在编译过程中不论a是什么,只是被替换成类型sizeof(int)
2) int f1();
sizeof(f1());
在编译过程中,由于函数f1的返回值为int类型,故将f1()替换成int
2) 只要是指针类型--sizeof结果大小为4
3) 数组大小是各维数的乘积*数组元素大小
4)unsigned 影响的是最高位的bit的意义(正/负),数据的长度不会被改变
如:sizeof(unsigned int) == sizeof(int)
注意点:
1)sizeof(类),注意类中有无虚函数----虚函数表的指针(4)也会被计入在内
2) 注意数组作为函数参数退化为指针-----sizeof(数组),数组作为sizeof的参数,本身不会退化
3)若参数是自定义类或struct,注意内存对齐原则
4)空类的占用内存空间为1,单个继承/多个继承的空类空间为1,虚继承涉及虚表(虚指针)--空间为4