文章目录
- sizeof运算符的结果部分地依赖于其作用的类型
sizeof运算符的结果部分地依赖于其作用的类型
- 对char或者类型为char的表达式执行sizeof运算,结果得1
- 对引用类型执行sizeof运算得到被引用对象所占空间的大小
- 对指针执行sizeof运算得到指针本身所占空间的大小
- 对解引用指针执行sizeof运算得到指针指向的对象所占空间的大小,指针不需有效
- 对数组执行sizeof运算得到整个数组所占空间的大小,等价于对数组中所有的元素各执行一次sizeof运算并将所得结果求和。注意,sizeof运算不会把数组转换成指针来处理
- 对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间
因为执行sizeof运算能得到整个数组的大小,所以可以用数组的大小除以单个元素的大小得到数组中元素的个数:
constexpr size_t sz = sizeof(ia)/sizeof(*ia); // sz为ia的元素数量
int arr[sz];
因为sizeof的返回值是一个常量表达式,所以我们可以用sizeof的结果声明数组的维度。