二维数组的行和列是否从0开始? < > >代码> int MyLa[ 7 ] [ 7 ] < /C>不创建一个具有8x8个位置的框,C++中的0~7行和列为-+/P>

二维数组的行和列是否从0开始? < > >代码> int MyLa[ 7 ] [ 7 ] < /C>不创建一个具有8x8个位置的框,C++中的0~7行和列为-+/P>,c++,arrays,C++,Arrays,当我跑步时: 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; } 因此,8列似乎有效,但8行无效。 如果我将其更改为intboard[8][7]={0}它在mac Code

当我跑步时:

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;
}   
因此,8列似乎有效,但8行无效。 如果我将其更改为
intboard[8][7]={0}
它在mac CodeRunner IDE上工作,但在linux代码块上我得到:

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

不确定这里发生了什么。

intboard[7][7]将仅分配7x7,而不是8x8。分配时,您可以指定索引的数量,但索引从0开始,并运行到大小为-1


根据你的资料来源,我想说你真的想要
intboard[8][8]
intboard[7][7]将仅分配7x7,而不是8x8。分配时,您可以指定索引的数量,但索引从0开始,并运行到大小为-1


根据你的资料来源,我想说你真的想要
intboard[8][8]

intboard[7][7]={0}创建一个7x7阵列。你在你的循环中越界了。将其更改为
intboard[8][8]={0}
int board[7][7]={0}创建一个7x7阵列。你在你的循环中越界了。将其更改为
intboard[8][8]={0}
int a[7];
可以在0到6之间建立索引

int a2[7][7];

可以在两个维度中从0到6建立索引,索引7超出范围。特别是:
a2
有7列和7行,而不是8行。

二维数组在这方面与一维数组没有什么不同:正如

int a[7];
int board[8][7]  = {0};
可以在0到6之间建立索引

int a2[7][7];
可以在两个维度中从0到6建立索引,索引7超出范围。特别是:
a2
有7列和7行,而不是8行

int board[8][7]  = {0};
当您执行上述操作时,只创建了8行和7列

因此,循环条件应如下所示:

for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 7; j++) 
    {     
for(int i=0;i<8;i++)
{
对于(int j=0;j<7;j++)
{     
若您尝试以下操作,系统将从第8列打印垃圾值

for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 8; j++) 
    {      
for(int i=0;i<8;i++)
{
对于(int j=0;j<8;j++)
{      
当您执行上述操作时,只创建了8行和7列

因此,循环条件应如下所示:

for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 7; j++) 
    {     
for(int i=0;i<8;i++)
{
对于(int j=0;j<7;j++)
{     
若您尝试以下操作,系统将从第8列打印垃圾值

for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 8; j++) 
    {      
for(int i=0;i<8;i++)
{
对于(int j=0;j<8;j++)
{      

aray从零开始表示它将有n-1个元素,而不是n+1个元素 试一试

inta[8][8]={}
i=0
j=0

对于(i=0;iaray从零开始意味着它将有n-1个元素,而不是n+1个元素 试一试

inta[8][8]={}
i=0
j=0

对于(i=0;IAHH CRAP),我对C++是全新的。出于某种原因,我认为‘int a’(7)从0创建了一个数组。7@AustinMW由于您是新手:我强烈建议您使用
std::array
(或者
boost::array
,如果您是C++11之前的版本,则使用它来代替原始数组。它使用起来非常简单,并且没有缺点(据我所知)AHH CRAP我对C++是全新的,因为某种原因,我认为‘int’(7)创建了一个数组,从0到7@AustinMW由于您是新手:我强烈建议您使用
std::array
(或者
boost::array
,如果您是C++11之前的版本,则使用它来代替原始数组。它使用起来非常简单,并且没有缺点(据我所知)。