sizeof运算符返回一条表达式或一个类型名字所占字节数。
sizeof运算符满足 右结合律
所得值是一个size_t类型的常量表达式
运算符的运算对象有两种形式
sizeof (type)
sizeof expr
第二种形式中sizeof返回的是表达式结果类型的大小,sizeof并不实际运算其运算对象的值
Sales_data data, *p;
sizeof(Sales_data); //储存Sales_data类型对象所占的空间大小
sizeof data; //data类型的大小,即sizeof(Sales_data)
sizeof p; // 指针所占的空间大小
sizeof *p; // p所指类型的空间大小,即 sizeof(Sales_data)
sizeof data.revenue // Sales_data 的 revenue成员对应类型的大小
sizeof Sales_data::revenue //另一种获取revenue大小的方式
Sizeof 右结合律表达式从右向左进行
sizeof 中引用一个无效指针仍然安全,因为指针实际上没有被引用。
C++11允许我们使用作用域运算符来获取类成员的大小,通常情况下只有通过类的对象访问到类的成员。
但sizeof不需要提供具体的对象,因为想知道类成员大小无需真的获取该成员
sizeof运算符作用的结果部分地依赖于其作用的类型
- 对char或者类型为char的表达式执行 sizeof 运行,结果得1
- 对引用类型执行sizeof运算得到被引用对象所占空间的大小
- 对指针执行sizeof运算得到指针本身所占空间的大小
- 对解引用指针执行sizeof运算得到指针指向的对象所占空间的大小,指针不需有效