繁体   English   中英

无法初始化2D阵列

[英]Unable to Initialize 2D Array

我已经声明了一个二维全局数组变量,如下所示:

int grid_2d_array[ROWS][COLUMNS];

然后在main我必须使用硬编码值对其进行初始化:

grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
                                ....
                                {1, 6, 3, 2, 4, 8, 9, 5}
                                };

例:

#include <stdio.h>

#define ROWS    9
#define COLUMNS 9

/* Global variable. */
int grid_2d_array[ROWS][COLUMNS];

int main() 
{
   /* Initialze the 2D array. */
   grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
                                   ....
                                   {1, 6, 3, 2, 4, 8, 9, 5}
                                  };

   return 0;
}

但是当我尝试编译源代码时,GCC给出以下错误:

source_file.c: In function ‘main’:
source_file.c:45:34: error: expected expression before ‘{’ token
 grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
                                ^

我不确定为什么GCC不能将grid_2d_array识别为全局变量。

如果我在main重新声明上述变量,问题就解决了。

我正在运行GCC版本: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)

C和C ++数组只能作为定义语句的一部分进行初始化:

int grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
                                    ....
                                    {1, 6, 3, 2, 4, 8, 9, 5}
                                   };

不支持将多个值分配给数组。

除了FireAphis的答案外,如果您使用的是C99,还可以使用复合文字来初始化一个指向int数组(不是2D数组)的指针,该数组位于其定义之外:

int (*grid_2d_array)[COLUMNS]; /* Pointer to array of n int's */

在主要方面:

grid_2d_array = (int [ROWS][COLUMNS]){
    {5, 7, 2, 8, 3, 6, 1, 4},
    {1, 6, 3, 2, 4, 8, 9, 5}
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM