【原创】sizeof运算符总结

  1. sizeof运算符返回一条表达式或一个类型名字的所占字节数,返回值为size_t的常量表达式,注意:sizeof右结合,且为编译时计算,而非运行时
  2. 两种形式:sizeof (type)和sizeof expression
  3. sizeof计算的永远是类型所占字节数,如果是数组则计算数组的长度乘以元素类型字节数;所以对于第二种形式,计算的是expression表达式结果的类型大小,而不是表达式的值
  4. sizeof运算符不是实际求表达式的值,所以sizeof *p,即使p是无效指针,也是安全的,得到的是*p的类型大小,注意:不是指针的大小
  5. vector等容器对象进行sizeof运算,只会返回该类固定部分的大小,不会计算容器中元素占用空间
  6. 函数的数组形参进行sizeof运算时,作为指针进行计算;其他地方正常,计算数组大小则为数组的长度乘以元素类型字节数

c++11下新用法:计算类公有成员大小,无需提供具体的类,因为不需要进行运算;注意:不能对私有成员或保护成员进行sizeof,因为它们在外部不可访问

1 class A{
2 public:
3     int a;
4 };
5 sizeof A::a
posted @ 2015-11-04 10:24  cposture  阅读(1055)  评论(0编辑  收藏  举报
levels of contents