C 如果元素在结构中的位置已知,则访问结构元素,而不为每个元素定义案例
如果我有一个包含3个元素的结构,并且第一个元素有一个读取请求。在这个场景中,有一种读取方法,它以一种通用的方式构造Xth元素,而不为每个数字定义案例 psuedo代码示例C 如果元素在结构中的位置已知,则访问结构元素,而不为每个元素定义案例,c,pointers,struct,C,Pointers,Struct,如果我有一个包含3个元素的结构,并且第一个元素有一个读取请求。在这个场景中,有一种读取方法,它以一种通用的方式构造Xth元素,而不为每个数字定义案例 psuedo代码示例 #define RED 1 #define BLUE 2 #define GREEN 3 typedef struct color { int red; int char; int green; }; color a1; void ReadfromColor(int id , void * abc) { switch(id
#define RED 1
#define BLUE 2
#define GREEN 3
typedef struct color
{
int red;
int char;
int green;
};
color a1;
void ReadfromColor(int id , void * abc)
{
switch(id)
{
case RED:
{
temp = a1.red;
}
break;
case BLUE:
{
temp = a1.blue;
}
break;
case GREEN:
{
temp = a1.green;
}
break;
abc=&temp;
}
}
对于每个元素,我都有一个案例。那么,如果函数ReadfromColor知道元素和顺序,那么是否有一种通用的方法来引用结构的特定属性
//这可能是一个愚蠢的问题,仍然希望找到解决办法…..您可以将表示形式更改为:
typedef struct color {
int c[3]; // int[0] is red, green, blue
} color_t;
访问功能内部:
temp = c[id];
在实际代码中,问题是结构是标准的,不能更改。您可以使用
offsetof()
来找出偏移量,并使用id
作为结构的偏移量(但需要注意对齐和签名):例如abc=a1+id*sizeof(int)
jev的意思当然是abc=&a1.red+id-1
。