c++ - 二维数组的行和列是否从0开始?

标签 c++ arrays

int myarray[7][7] 不会在 C++ 中创建一个包含 0-7 行和列的 8x8 位置的框吗?

当我运行时:

int board[7][7] = {0};

for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 8; j++) 
    {       
        cout << board[i][j] << " ";
    }
    cout << endl;
}   

我得到输出:

0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 146858616 1 0 0 146858832 1 1978920048 

因此 8 列似乎有效,但 8 行无效。 如果我将它更改为 int board[8][7] = {0}; 它可以在 mac CodeRunner IDE 上运行,但在 linux Codeblocks 上我得到:

0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 1 0 0 0 0 0 1503452472

不确定这里发生了什么。

最佳答案

二维数组在这方面与一维数组没有区别:正如

int a[7];

可以从0到6进行索引,

int a2[7][7];

可以在两个维度上从0到6进行索引,索引7越界。特别是:a2 有 7 列和行,而不是 8。

关于c++ - 二维数组的行和列是否从0开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084163/

相关文章:

c++ - 一个类通过多个类应该如何完成?

C++ 模板构造函数默认参数

ruby - 如何在 Ruby 中填充数组?

arrays - 在 Scala 中加入两个 Array[Byte]?

JavaScript:对于对象中的每个对象?

c++ - 使用 sprintf 进行字符串连接

c++ - Fuse C++ 驱动程序 - read() 实现

c++ - 手动删除函数返回的指针

arrays - 为什么我的状态数组重置为空?

javascript 将数组的元素转换为数组