帮忙看看这道简单的C++程序

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:41:25
#include <iostream>
using namespace std;
int main()
{
int array2[2][3]={{11,12,13},{21,22,23}};
for(int i=0;i<2;i++)
{
cout<<*(array2+i)<<endl;//输出二维数组第i行的首地址
for(int j=0;j<3;j++)
{
cout<<*(*(array2+i)+j)<<" ";
}
cout<<endl;
}
}

cout<<*(array2+i)<<endl;//输出二维数组第i行的首地址
我不懂的这里为什么输出的是地址,带*号的不是输出的是里面的内容吗?怎么是地址了?

int array2[2][3];
你声明的这是一个二位数组。
在C++中,这个二维数组可以这么看
第一维:int* array2[int* ar1];
第二维:int ar1[3];
你使用 *(array2 + i),这是第在第一维中取值,得到的值就是第二维的首地址

数组定义已经是内容了 再*就变成地址了

array2 是2维数组,
array2 是地址
*array2 是地址
**array2 是int

两个星号才可以输出值啊,这是二维数组,如果是一维数组的话你的想法是正确的。

两个星号才可以输出值啊,这是二维数组,如果是一维数组的话你的想法是正确的