sizeof 运算符
sizeof
运算符返回一条表达式或一个类型名字所占的字节数。sizeof
运算符满足右结合律,其所得的值是一个 size_t 类型。- 运算符的运算对象有两种形式:
sizeof(type)
sizeof(expr)
sizeof
运算符的结果部分地依赖于其作用类型:
- 对
char
或者类型为char
的表达式执行sizeof
运算,结果得1。 - 对引用类型执行
sizeof
运算得到被引用对象所占的空间大小。 - 对指针执行
sizeof
运算得到的指针本身所占空间的大小。 - 对解引用指针执行
sizeof
运算得到指针所指向的对象所占的空间大小,指针不需要有效。 - 对数组执行
sizeof
运算得到整个数组所占空间的大小,等价于对数组中所有的元素各执行一次sizeof
运算得到的结果求和,注意sizeof
运算不会将数组转换成指针类型。 - 对
string
对象或者vector
对象执行sizeof
操作,只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间。
注意:
因为执行sizeof 运算得到整个数组的大小,所以可以用数组的大小除以单个元素的大小得到数组中的元素个数:
sizeof(ia) / sizeof(*ia); //返回ia的元素的数量
逗号运算符
- 逗号运算符含有两个运算对象,按照从左向右的顺序依次求值。
- 首先对左侧的表达式求值,然后将其值丢掉,逗号运算符真正的结果是右侧表达式的值。
- 逗号运算符经常被用在 for 循环当中:
vector<int>::size_type cnt = ivec.size();
for(vector<int>::size_type ix = 0;ix != ivec.size();++ix,--cnt)
ivec[ix] = cnt;