如何访问二维数组值并将值赋给C中的int

时间:2016-06-28 11:38:27

标签: c arrays multidimensional-array

我的C中的二维数组有问题。假设2D数组是board[d][d]d=7),我想将board[d-1][d-2]的值赋给int 。当我这样做时,我得到错误,如果我printf 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("%d\n", even);

   printf("%i\n", 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;
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

当您创建board数组时,它不会被初始化 - 您会在里面获得垃圾值。一个好的做法是在使用之前初始化数组

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

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