使用union来遍历结构体中的成员

时间:2021-07-16 10:31:16

前几天和实验室的同学讨论问题的时候发现他使用的一段数据校验的代码自己以前没有接触过,今天有空就把它整理了一下。

#include <stdio.h>
#include
<stdlib.h>

struct message
{
int cmd_0;
int cmd_1;
int cmd_2;
int cmd_3;
int cmd_4;
int cmd_5;
int cmd_6;
int cmd_7;
int cmd_8;
int cmd_9;
};

union msg
{
struct message my_message;
int message_arr[10];
};
int main()
{
int i = 0;
union msg my_msg;
my_msg.my_message.cmd_0
= 10;
my_msg.my_message.cmd_1
= 9;
my_msg.my_message.cmd_2
= 8;
my_msg.my_message.cmd_3
= 7;
my_msg.my_message.cmd_4
= 6;
my_msg.my_message.cmd_5
= 5;
my_msg.my_message.cmd_6
= 4;
my_msg.my_message.cmd_7
= 3;
my_msg.my_message.cmd_8
= 2;
my_msg.my_message.cmd_9
= 1;

for (i;i<10;i++)
{
printf(
"%d\n",my_msg.message_arr[i]);
}


system(
"pause");
return 0;
}

运行结果

使用union来遍历结构体中的成员

通过将结构体和一个数组来遍历结构体成员,这种方法有一个弊端是要求结构体成员的类型要一样,但是对于数据校验来说,这也是一种方法。