这段代码利用指针实现对结构体变量内容进行互换
主要涉及到结构体的声明,结构体变量的定义,指针等
#include <iostream>
//strcpy()
#include <string.h>
using namespace std;
//声明结构体
struct Student{
char name[20];
int age;
int sex;
};
//p和q都是Student类型的指针,将要接受Student类型变量的地址,嫩够通过引领操作符对实际机构体变量进行修改
void exchange(struct Student *p,struct Student *q);
void exchange_2(struct Student *s1,struct Student *s2);
int main()
{
int n,i,mini;
float x,y,mint,t;
//分别定义结构体student1和student2两个变量
struct Student student1={"lihaiyu",24,1};
struct Student student2={"zhangyuqiong",26,0};
cout<<"交换前信息:\n";
cout<<"student1: "<<student1.name<<" "<<student1.age<<" "<<student1.sex<<endl;
cout<<"student2: "<<student2.name<<" "<<student2.age<<" "<<student2.sex<<endl;
cout<<endl;
//向函数传递结构体变量的地址
exchange(&student1,&student2);
cout<<"交换后信息:\n";
cout<<"student1: "<<student1.name<<" "<<student1.age<<" "<<student1.sex<<endl;
cout<<"student2: "<<student2.name<<" "<<student2.age<<" "<<student2.sex<<endl;
}
void exchange(struct Student *p,struct Student *q)
{
//定义结构体变量tmp
struct Student tmp;
tmp = *p;
*p = *q;
*q = tmp;
}
//exchange_2和exchange等价,exchange_2对每一个成员复制
void exchange_2(struct Student *s1,struct Student *s2)
{
struct Student tmp;
//因为name是字符串,所以需要使用stcpy进行复制
strcpy(tmp.name,s1->name);
strcpy(s1->name,s2->name);
strcpy(s2->name,tmp.name);
tmp.age = s1->age;
s1->age = s2->age;
s2->age = tmp.age;
tmp.sex = s1->sex;
s1->sex = s2->sex;
s2->sex = tmp.sex;
}