[英]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.