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
不确定这里发生了什么。
答案 0 :(得分:2)
在这方面,二维数组与一维数组没有区别:正如
int a[7];
可以从0到6进行索引,
int a2[7][7];
可以在两个维度中从0到6建立索引,索引7超出范围。特别是:a2
有7列和7行,而不是8行。
答案 1 :(得分:1)
int board[7][7];
只会分配7x7,而不是8x8。分配时,指定了多少,但索引从0开始并运行到大小-1。
因此,根据您的来源,我会说您真的想要int board[8][8]
。
答案 2 :(得分:1)
int board[7][7] = {0};
创建一个7x7数组。你在循环中走出界限。将其更改为int board[8][8] = {0};
答案 3 :(得分:1)
int board[8][7] = {0};
如上所述,您只创建了8行和7列。
所以你的循环条件应该如下:
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 7; j++)
{
如果您尝试以下操作,系统将从第8列打印垃圾值
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
答案 4 :(得分:0)
Araay从零开始意味着它将具有n-1个元素而不是n + 1个元素 尝试
int a[8][8] = {}
i = 0
j = 0
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
a[i][j] = 0;
}
}