有没有办法遍历多个结构,例如遍历数组?

时间:2019-07-28 19:44:53

标签: c struct

有没有办法遍历结构并在过程中为其成员分配值?

我不确定我是否正确地构成了问题,因此我将尝试在代码中显示它,这当然是无效的,但希望可以作为更好的示例:

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中甚至有可能吗?

1 个答案:

答案 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;
}

两者都可以编译-都可以。