1.什么是sizeof?
sizeof返回一条表达式或者一个类型名字所占的字节数。sizeof运算满足右结合律,其所得的值是一个size_t类型的的常量表达式。运算符的运算对象有两种形式:
sizeof (type)
sizeof expr
在第二种形式中,sizeof返回的是表达式结果类型的大小。与众不同的一点是,sizeof实际上并不计算表达式的值。
2.如何确定sizeof 返回值的大小?
sizeof运算符的运算结果部分依赖于其作用的类型:
- 对char或者类型为char的表达式执行sizeof 运算得到的结果为1。
- 对引用类型执行sizeof 得到的是引用对象的大小。
- 对指针执行sizeof 运算得到的是指针本身所占的空间大小,通常为4。
- 对解引用执行sizeof 运算得到的是指针指向的对象所占的空间大小,指针不需要有效。
- 对数组得到的是整个数组空间的大小
- 对string 或者vector 对象执行sizeof 运算只返回该类型固定部分的大小,不会计算对象中的元素占了多少存储空间。
.