c++中二维数组数组名的问题

我已经知道了二维数组的数组名代表的是行地址,那么如果二维数组的数组名加上一个比该二维数组行数更大的一个数,代表的是第几个元素的地址?求解!!!
例:
#include
using namespace std;
void main()
{
int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
cout << a + 6 << endl;
}

4个回答

你的代码不能通过编译,改写下

 #include<iostream>
using namespace std;
int main()
{
    int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    cout << *(a + 6) << endl;
}

因为你越界了,访问的其实不是数组的东西,在我这里输出
[-5288324, 134523824, 0, -143582656]

你这样的结果会造成越界。
a + 6 代表跳过六行,是第七行的首地址,直接cout打印出的是地址

cout << *((*(a + 2))+2) << endl; //输出第三行第三列,即11

加上一个超出数组范围的数,肯定就是越界了

其实二维数组的存储也是按一维数组的形式存放的,先存一行,接着存下一行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐