0 c c++ struct pointers data-structures
是否可以在不知道结构或类的成员变量名称的情况下访问其单个成员?我想做一个“offsetof(struct, tyname)”,而不需要对其他内容进行硬编码的结构名称或成员变量名称。谢谢。
当然。如果您有一个结构体并且知道成员变量的偏移量和类型,则可以使用指针访问它。
struct my_struct {
int member1;
char member2;
short member3;
char member4;
}
...
struct my_struct obj;
short member3 = *((short*)((char*)&obj + 5));
Run Code Online (Sandbox Code Playgroud)
这将获得 的值,在 x86 计算机上,member3该值是从 开始处算起的 5 个字节。obj但是,您要小心。首先,如果结构发生变化,你的数据将是垃圾。我们在各处进行强制转换,因此您没有类型安全性,并且如果出现问题,编译器也不会警告您。您还需要确保编译器不会打包结构以将变量与字边界对齐,否则偏移量将会改变。
这不是一件令人愉快的事情,如果我是你,我会避免这样做,但是是的,这是可以做到的。