有没有办法遍历结构并在过程中为其成员分配值?
我不确定我是否正确地构成了问题,因此我将尝试在代码中显示它,这当然是无效的,但希望可以作为更好的示例:
struct example {
int x;
/* ... */
};
struct example s1;
struct example s2;
int *structs[] = {
s1.x,
s2.x
};
int main(void) {
for (int i = 0; i < 2; i++) {
*structs[i] = i;
}
return 0;
}
基本上,我需要自动化将值分配给多个结构的过程,但是我不知道该怎么做。在C中甚至有可能吗?
答案 0 :(得分:2)
如果您修复了一些琐碎的语法错误,则可以提出:
struct example
{
int x;
/* ... */
};
struct example s1;
struct example s2;
int *structs[] = { &s1.x, &s2.x };
int main(void)
{
for (int i = 0; i < 2; i++)
{
*structs[i] = i;
}
return 0;
}
或者,您可以使用指向结构的指针数组:
struct example
{
int x;
/* ... */
};
struct example s1;
struct example s2;
struct example *examples[] = { &s1, &s2 };
enum { NUM_EXAMPLES = sizeof(examples) / sizeof(examples[0]) };
int main(void)
{
for (int i = 0; i < NUM_EXAMPLES; i++)
{
examples[i]->x = i;
// ...
}
return 0;
}
两者都可以编译-都可以。