c - 无法初始化二维数组

标签 c arrays gcc

我已经像这样声明了一个二维全局数组变量:

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/

相关文章:

c - 排序数组中的 "=="是否不比未排序数组快?

c - 手动解析字符串

c - C中的结构体到数组

控件到达具有自定义退出功能的非空函数的结尾

objective-c - 为什么负 NSInteger(长整型)值在通过可变参数发送时会变成垃圾?

c - 如何将 SHA1 返回值转换为 ascii

ios - 如何在 Swift 2.0 中实现 copyWithZone?

java - 获取在 ListActivity 中单击的项目的信息?

c - C中_start()有什么用?

c++ - 测量 C++ 中的异常处理开销