也许你可以定义一个数组,数组的值是结构体各个成员在结构体中的偏移位置,如
const int offset[] = {0, sizeof(char), sizeof(char)+sizeof(int)};
struct Test a;
那么访问第一个数据可以
char num1 = *(char*)((char*)&a + offset[0]);
int num2 = *(int*)((char*)&a + offset[1]);
int num3 = *(int*)((char*)&a + offset[2]);
你可以通过switch实现,每个case时注意成员类型。
不可能!