注册 登录
编程论坛 C++教室

[求助]二维数组的输出

Standford 发布于 2007-10-19 09:37, 908 次点击
#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; //这里输出代表什么,为什么会是地址,array2是数组首地址,*(array2+i)怎么不是对应的元素
for(int j=0;j<3;j++)
{ cout<<*(*(array2+i)+j)<<" ";
//或者 cout<<array2[i][j]<<" ";
}
cout<<endl;
}
}
7 回复
#2
天使梦魔2007-10-19 10:05
不清楚,是解析成指针了吧.
对应的元素应该用array2[i]吧
你直接用array2+i是把数字I加到array2数据里去
#3
永夜的极光2007-10-19 10:15
array是二维数组,(array+i)是个一维数组,其实就是第i行的首地址

*(*(array2+i)+j)这样才是数组的元素

二维数组相当于二维指针,要两个*才能得到元素的值
#4
Standford2007-10-20 19:42
回复:(永夜的极光)array是二维数组,(array+i)是个...

十分感谢!!
我还是有点不懂, 既然,“(array+i)是个一维数组,其实就是第i行的首地址”那么
*(array2+i)怎么不是对应的元素,而是地址

#5
无缘今生2007-10-20 20:34
int 类型的数据在内存中是用几个字节存储的.

你用一个地址加上一个整数后的地址,你敢肯定它是指向下一个整型数据的吗.
#6
蓝莲之鸟2007-10-21 12:59
*(array2+i)是指针,改成*(*(arry2+i))就可以了,前者可以看作是一位数组的首地址,后者才是数据内容
#7
天心水月2007-10-21 13:27
以下是引用蓝莲之鸟在2007-10-21 12:59:33的发言:
*(array2+i)是指针,改成*(*(arry2+i))就可以了,前者可以看作是一位数组的首地址,后者才是数据内容

#8
q3637425332007-10-27 09:49

一维数组对应一级指针,二维数组对应二级指针 所以 *(*(array2+i)+j)才是值

1