如何在C中访问二维数组值并将值传递给int



我在c中有一个二维数组的问题。说二维数组是board[d][d] (d=7),我想将board[d-1][d-2]的值分配给int。当我这样做,我得到错误,如果我打印board[d-1][d-2]我得到32766。该数组的最大值为d*d-1=48。我做错了什么?

int main(void)
{
   int d=7;
   int nr=(d*d)-1;
   int board[d][d];
   int u=board[d-1][d-2];
   bool even=false;
   if ((d/2)*2!=d)
   {
      even=true;
   }
   printf("%dn", even);
   printf("%in", board[d-1][d-2]); //result here is 32764?
   for(int i=0;i<d;i++)
   {
      for(int j=0;j<d;j++)
      {
         board[i][j]=nr;
         nr--;
         printf(" %2d", board[i][j]);
      }
      printf("n");
   }
   return 0;
}

这是因为您没有用任何值初始化它,所以它只是将碰巧在内存中存在的任何垃圾存储在内存中。您需要在板上运行并为其设置初始值。

当你创建board数组时,它没有初始化-你在里面得到垃圾值。一个好的做法是在使用数组之前初始化它

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

如果您将printf移动到您用值填充数组的循环之后,您将得到预期的结果

相关内容

  • 没有找到相关文章

最新更新