关于C++指针的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 16:18:47
本人最近正在看C++最近看到指针这章的例题的时候,有点迷茫希望高人指点,菜鸟问题见笑了。例题如下:
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
int i;
for(i=0;i<10;i++)
cout<<*(a+i)<<" "; // 此处*(a+i)是将数组中各各元素输出
cout<<endl;
}
结果:1 2 3 4 5 6 7 8 9 0
另外一题:
void main()
{
int array2[2][3]={{11,12,13},{21,22,23}};
for(int i=0;i<2;i++)
{
cout<<*(array2+i)<<endl; //此处输出的是地址
for(int j=0;j<3;j++)
{
cout<<*(*(array2+i)+j)<<" ";
}
cout<<endl;
}

}
为什么例1中*(a+i) 输出的是数组元素而例2中*(array2+i)输出的缺是地址呢?这两个的表达方式不是一样的么?

第一题中的a是一维数组,首地址的表示方法是a或者&a[0]
如果要取地址中的数据就应该在前边加个星*a这是取第0个位置上的数据,如果要取第1个位置上的数据呢就要在地址上加个编移量然后再加星取值如:*(a+1)就是取第一个位置上的数据,第i个则是*(a+i);
第二题是array2是二维数据,他的首地址表示方法是array[0],而array则是二级指针,指向array[0],这样,取其中的值便是地址了。