我想在一个结构中有两个数组,它们在开始时初始化,但需要进一步编辑。我需要这个结构的三个实例,这样我就可以索引到一个特定的结构中,并根据需要进行修改。有可能吗?
这是我想我可以做的,但我有错误:
struct potNumber{
int array[20] = {[0 ... 19] = 10};
char *theName[] = {"Half-and-Half", "Almond", "Rasberry", "Vanilla", …};
} aPot[3];
然后按如下方式访问结构:
printf("some statement %s", aPot[0].array[0]);
aPot[0].theName[3];
…
最佳答案
结构本身没有数据。您需要创建结构类型的对象并设置这些对象…
struct potNumber {
int array[20];
char *theName[42];
};
/* I like to separate the type definition from the object creation */
struct potNumber aPot[3];
/* with a C99 compiler you can use 'designated initializers' */
struct potNumber bPot = {{[7] = 7, [3] = -12}, {[4] = "four", [6] = "six"}};
for (i = 0; i < 20; i++) {
aPot[0].array[i] = i;
}
aPot[0].theName[0] = "Half-and-Half";
aPot[0].theName[1] = "Almond";
aPot[0].theName[2] = "Rasberry";
aPot[0].theName[3] = "Vanilla";
/* ... */
for (i = 0; i < 20; i++) {
aPot[2].array[i] = 42 + i;
}
aPot[2].theName[0] = "Half-and-Half";
aPot[2].theName[1] = "Almond";
aPot[2].theName[2] = "Rasberry";
aPot[2].theName[3] = "Vanilla";
/* ... */