C 如何通过变量引用结构成员?

C 如何通过变量引用结构成员?,c,syntax,structure,members,C,Syntax,Structure,Members,我尝试使用For循环遍历结构的成员 struct Pixel{ unsigned char = Red, Green, Blue; }; 总的来说,我想 const char *color[]= {"Red", "Green", "Blue}; 并且能够引用struct Pixel的成员 struct Pixel pixels; pixels.color[i]; // i being the counter in the For loop 而不是 pixels.Red; pixels.

我尝试使用For循环遍历结构的成员

struct Pixel{
  unsigned char = Red, Green, Blue;
};
总的来说,我想

const char *color[]= {"Red", "Green", "Blue};
并且能够引用struct Pixel的成员

struct Pixel pixels;
pixels.color[i]; // i being the counter in the For loop
而不是

pixels.Red;
pixels.Green;
我收到一条警告,说这是不允许的。我试过在颜色[I]周围加括号,但没有用

这是可能的还是我只是在浪费时间

如果是,我需要使用什么语法


谢谢,C就是不能这样工作。您所能做的最好的事情是:

struct Pixel {
    unsigned char Red;
    unsigned char Green;
    unsigned char Blue;
};

unsigned char get_element(struct Pixel * sp, const char * label)
{
    if ( !strcmp(label, "Red") ) {
        return sp->Red;
    }
    else if ( !strcmp(label, "Green") ) {
        return sp->Green;
    }
    else if ( !strcmp(label, "Blue") ) {
        return sp->Blue;
    }
    else {
        assert(false);
    }
}

int main(void)
{
    const char * color[] = {"Red", "Green", "Blue"};
    struct Pixel p = {255, 255, 255};
    for ( size_t i = 0; i < 3; ++i ) {
        unsigned char element = get_element(&p, color[i]);
        /*  do stuff  */
    }

    return 0;
}
struct像素{
无符号字符红色;
无符号字符绿色;
无符号字符蓝色;
};
无符号字符get_元素(结构像素*sp,常量字符*label)
{
如果(!strcmp(标签“红色”)){
返回sp->红色;
}
否则,如果(!strcmp(标签为“绿色”)){
返回sp->绿色;
}
如果(!strcmp(标签“蓝色”)){
返回sp->蓝色;
}
否则{
断言(假);
}
}
内部主(空)
{
常量字符*颜色[]={“红色”、“绿色”、“蓝色”};
结构像素p={255,255,255};
对于(尺寸i=0;i<3;++i){
unsigned char元素=get_元素(&p,color[i]);
/*做事*/
}
返回0;
}

struct Pixel{unsigned char=Red,Green,Blue;}
不是有效的结构声明,能否将您的测试代码设置为最小值?
枚举{Red,Green,Blue}颜色-
struct…{…color c;..};如果你想使用字符串引用变量或
struct
元素,就像你在Python这样的语言中可能做的那样,你就是做不到,C不能那样工作。您可以编写自己的逻辑来手动执行此操作,但这样做没有多大意义。@JudgeHanger:这绝对不正确。它的可能副本不会引用它,它将包含与它相同的值。如果需要实际引用,可以编写
get\u element()
来返回指针。