指针与结构体

这段代码利用指针实现对结构体变量内容进行互换

主要涉及到结构体的声明,结构体变量的定义,指针等

#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;

}

猜你喜欢

转载自blog.csdn.net/Li_haiyu/article/details/81568158
今日推荐