我已经像这样声明了一个二维全局数组变量:
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 版本 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}
};
不支持将多个值赋值到一个数组中。
关于c - 无法初始化二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32965007/