为什么这个数组没有正确初始化?

时间:2014-06-07 23:58:49

标签: c arrays

我已尝试将括号放在我知道的任何地方,但我不断收到错误"在初始化程序周围缺少括号"。这是一个struct Point

数组
Point pointArray[9][2]={1,1,-1,1,-1,-1,1,-1,1,0,0,1,-1,0,0,-1,0,5,1000,1};

我在每组点附近放置了括号,每端有2个括号,并且它没有改变任何东西

2 个答案:

答案 0 :(得分:2)

使用此:

Point pointArray[9][2]={{1,1},{-1,1},{-1,-1},{1,-1},{1,0},{0,1},{-1,0},{0,-1},{0,5},{1000,1}};

你完成它的方式就像初始化一个包含20个元素的一维数组(Point pointArray[20]=...;)。

但是,只有一半可以解决您的问题,因为您在那里有 10 对,并且您已指定 9 。您可能必须删除数组条目,或将定义更改为Point pointArray[10][2]=...;

答案 1 :(得分:2)

如果您的结构类型如下:

typedef struct Point
{
    int x;
    int y;
} Point;

然后初始化程序的完全支撑版本应为:

Point pointArray[9][2] =
{
    { {  1,  1 }, { -1,  1 } },
    { { -1, -1 }, {  1, -1 } },
    { {  1,  0 }, {  0,  1 } },
    { { -1,  0 }, {  0, -1 } },
    { {  0,  5 }, { 1000, 1 } },
    // 4 uninitialized rows in the array - populated with zeros
};

最里面的支架围绕着结构;中间的大括号围绕结构对,对应于数组的[2]维度中的条目。对于阵列的第一个维[9],最外面的大括号围绕着可能的9个初始值设定项中的5个。