马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一个比较易错的小问题,反正我自己是解释的含含糊糊。
废话不多说,上问题:#include<iostream>
using namespace std;
int main()
{
int x[10];
int* p = x;
cout << sizeof(x) << endl;
cout << sizeof(*x) << endl;
cout << sizeof(p) << endl;
cout << sizeof(*p) << endl;
return 0;
}
能判断四个sizeof得值并解释清楚各自的含义吗?
首先要确定四个运算对象的具体含义:
x是数组名,sizeof(x)的结果是整个数组所占空间的大小,相当于对数组中所有元素依次sizeof的总合,
整型数组,10个元素,所以这一语句的结果为40。
*x这里是对x的解引用。(x是数组名,是指向数组首元素的指针)对x解引用,得到的就是指针所指内容,
注意,这里的“内容”是一个数组元素(int),而非数组的全部内容。因而:sizeof(*x)就可以理解为sizeof(int),
得到的结果为整型所占字节:4。
p是指针本身的值,sizeof(p)得到的是整型指针本身值的大小:4(字节)。
*p对指针p解引用,是指针所指对象(作为数组名的整型变量x),所以求值结果同样等价于sizeof(int),为4(字节)。
故:上述代码的运算结果为: 值得一提的是:C++内置数组并未提供成员函数size(),无法直接得到数组容量,
而中:
分子为数组所有元素所占的空间,分母为单个元素大小,商恰好可以所谓数组元素总数。
这也是求数组容量的一种常见方法。
|