我想在一个结构体中有两个数组,它们在开始时被初始化,但需要进一步编辑.我需要三个结构的实例,所以我可以索引到一个特定的结构,并按照我的意愿修改.可能吗?
这是我以为我可以做但我得到错误:
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类型的对象并设置对象…
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"; /* ... */