通过不带并集的C结构循环
我的意图是:在不使用联合的情况下循环一个结构的30个成员,所有成员都是字符数组类型,在每个成员中存储调用itoa的结果。在下面的代码中,我将结构成员命名为a-z,a-D。在调用函数中,我初始化了一个名为“字母”的字符串,然后尝试通过使用增量变量作为字母索引引用它们来循环结构成员。然后,我尝试转储结构中每个成员的内容**编辑:我意识到,根据您可以看到的代码,成员不会包含任何内容。问题似乎在于这样引用结构成员通过不带并集的C结构循环,c,struct,C,Struct,我的意图是:在不使用联合的情况下循环一个结构的30个成员,所有成员都是字符数组类型,在每个成员中存储调用itoa的结果。在下面的代码中,我将结构成员命名为a-z,a-D。在调用函数中,我初始化了一个名为“字母”的字符串,然后尝试通过使用增量变量作为字母索引引用它们来循环结构成员。然后,我尝试转储结构中每个成员的内容**编辑:我意识到,根据您可以看到的代码,成员不会包含任何内容。问题似乎在于这样引用结构成员 struct listArrays { char a[10]; char
struct listArrays {
char a[10];
char b[10];
char c[10];
char d[10];
char e[10];
char f[10];
char g[10];
char h[10];
char i[10];
char j[10];
char k[10];
char l[10];
char m[10];
char n[10];
char o[10];
char p[10];
char q[10];
char r[10];
char s[10];
char t[10];
char u[10];
char v[10];
char w[10];
char x[10];
char y[10];
char z[10];
char A[10];
char B[10];
char C[10];
char D[10];
};
struct listArrays Ternaries;
int testTernary(){
char letters[30] = "ABCDabcdefghijklmnopqrstuvwxyz";
int i;
for(i = 0; i < 30; ++i){
dumpArray((Ternaries.(letters[i])), 10);
}
return 0;
}
标识符(名称)仅存在于程序文本中。一旦编译和链接,它们就不再存在。因此,您不能为字母“索引”结构。您可以做的是:
struct listArrays {
char letters[30][10];
};
现在您可以访问这些“字母”:
请提供一个。你不能用一个变量来引用这样的结构成员。这远远不是C。你为什么不用一个2D数组来做你想做的事情呢?数组不是这样的。如果您想通过字符或2D数组进行访问,如果您只想在一个结构中使用多个数组,则需要使用从
char
到char[]
的关联容器。Paul,我的示例是否过多、不完整或无法验证?
struct listArrays {
char letters[30][10];
};
dumpArray((Ternaries.letters[i]), 10);