C语言/C++结构体成员遍历进阶版(成员变量不一致)
大家好,我是鸟哥
最近很多人留言问我不同长度的结构体成员变量的遍历究竟如何实现,话不多说,直接先上完整代码。
“结构体成员遍历”进阶版:
当结构体里的成员数据类型不一样,可以计算出每个结构体成员的偏移量,并将偏移量放到一个数组中,遍历数组获取偏移量后再根据偏移去获取成员变量。这样取出了不同类型的结构体,直接进行赋值取值即可。
//使用内存对齐让结构体成员紧凑起来
#pragma pack(1)
typedef struct s1{
char Member_0;
int Member_1;
float Member_2;
char Member_3;
//偏移量数组
const char offsetRecord[4] = {
0, 1, 4, 4}; //member的sizeof()
//类型数组
const char typeRecord[4] = {
1, 2, 3