您的位置:首页 > 其它

实现结构体变量交换值的函数

2004-12-27 22:01 232 查看
#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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct function include
相关文章推荐