返回一条表达式或一个类型名字所占字节数。
sizeof(type) sizeof expr Sales_data data, *p; sizeof(Sales_data); // 存储Sales_data类型的对象所占的空间大小 sizeof data; // data的类型的大小,即sizeof(Sales_data) sizeof p; // 指针所占的控件大小 sizeof *p; // p所指向的控件大小,等同于sizeof(Salesman)data) sizeof data.revenue; // Sales_data的revenue成员对应类型的大小 sizeof Sales_data::revenue
我们之前经常强调指针在使用前需要初始化。
这里给大家说一个特别的例子,sizeof计算指针指向对象的时候是否初始化并不会有问题产生。
1.对char或者类型为char的表达式执行sizeof运算,结果得1
2.对引用类型执行sizeof运算得到被引用对象所占空间的大小
3.对指针执行sizeof运算得到真真本身所占空间大小
4.对解引用指针执行sizeof运算得到指针指向的对象所占控件的大小,指针不需要有效
5.对数组执行sizeof运算得到整个数组所占控件的大小,等价于对数组中所有的元素各执行一次sizeof运算并将所得结果求和。注意,sizeof运算不会吧数组转换成指针来处理
6.对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间。