#include <stdio.h>
#include <string.h>
struct stuff
{
char full_name[20];
unsigned age;
unsigned gender;
};
void swap_struct_data(char *ptr_a, char *ptr_b, int size)
{
/*函数:swap_struct_data
作用:交换两个结构型变量的值
参数:ptr_a 变量A的地址,ptr_b 变量B的地址,size 变量的大小*/
char p;
while (size--!=0)
{
p=*ptr_a;
*ptr_a=*ptr_b;
*ptr_b=p;
ptr_a++;
ptr_b++;
}
}
int main()
{
/* 定义两个stuff型的变量,并初始化 */
struct stuff stu_a;
struct stuff stu_b;
strcpy(stu_a.full_name,"hexuhui");
stu_a.age=60;
stu_a.gender=1;
strcpy(stu_b.full_name,"candy");
stu_b.age=20;
stu_b.gender=2;
/* 显示交换数据前的值*/
printf("Data in stu_a:/n");
printf("%s/n",stu_a.full_name);
printf("%d/n",stu_a.age);
printf("%d/n",stu_a.gender);
printf("Data in stu_b:/n");
printf("%s/n",stu_b.full_name);
printf("%d/n",stu_b.age);
printf("%d/n",stu_b.gender);
/* 调用swap_struct_data函数,取出stu_a和stu_b的地址,转换成字符型指针后传入函数,
sizeof(struct stuff)是结构体的大小 */
swap_struct_data((char *)&stu_a,(char *)&stu_b,sizeof(struct stuff));
/* 显示交换数据后的值*/
printf("Data in stu_a after call function:/n");
printf("%s/n",stu_a.full_name);
printf("%d/n",stu_a.age);
printf("%d/n",stu_a.gender);
printf("Data in stu_b after call function:/n");
printf("%s/n",stu_b.full_name);
printf("%d/n",stu_b.age);
printf("%d/n",stu_b.gender);
}