将结构体与函数结合,将结构体作为参数传到函数中,在函数中执行与结构体相关的程序。
#include<iostream>
using namespace std;
struct student
{
string name;
int age;
int FS;
};
//1、值传递
int DY1(struct student s1)
{
//修改参数,观察实参的变化
s1.age = 13;
s1.FS = 95;
cout << "子函数1打印结果:" <<
" 姓名:" << s1.name <<
" 年龄:" << s1.age <<
" 分数:" << s1. FS << endl;
return 0;
}
//2、地址传递
int DY2(struct student* z)
{
//修改参数,观察实参的变化
z->age = 13;
z->FS = 95;
cout << "子函数2打印结果:" <<
" 姓名:" << z->name <<
" 年龄:" << z->age <<
" 分数:" << z->FS << endl;
return 0;
}
int main()
{
//结构体做函数参数
//定义结构体变量
struct student s1;
s1.name = "杨帆";
s1.age = 12;
s1.FS = 100;
//1、值传递
cout << "值传递之前main函数中定义结果:" <<
" 姓名:" << s1.name <<
" 年龄:" << s1.age <<
" 分数:" << s1.FS << endl;
DY1(s1);
cout << "值传递之后main函数中定义结果:" <<
" 姓名:" << s1.name <<
" 年龄:" << s1.age <<
" 分数:" << s1.FS << endl;
//2、地址传递
cout << "地址传递之前main函数中定义结果:" <<
" 姓名:" << s1.name <<
" 年龄:" << s1.age <<
" 分数:" << s1.FS << endl;
DY2(&s1);
cout <<"地址传递之后main函数中定义结果:"<<
" 姓名:" << s1.name <<
" 年龄:" << s1.age <<
" 分数:" << s1.FS << endl;
system("pause");
return 0;
}
经结果显示,结构体做参数时的变化与其他变量一样,值传递实参不变,地址传递实参改变。