sizeof

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

原文地址:https://www.cnblogs.com/MissZhang-154/p/13417716.html