结构体做函数参数(5)

作用:将结构体作为参数向函数中传递

传递方式有三种:

1.值传递:形参的改变,不会影响实参的值。(C/C++)

2.地址传递:。(C/C++) 

3.引用:真正的以地址的方式传递参数,传递以后,行参和实参都是同一个对象,只是它们名字不同而已,对行参的修改将影响实参的值。(C++)

**********************************形参、实参概念******************************

实参:实实在在的数据,数值!

形参:占位符(变量名=占位符),它没有数据!

**********************************************************************************

值传递:

1 //1.值传递方式
2 void stu_info_01(struct Student s)
3 {
4     s.age = 100;//修改形参
5     cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
6 }
 1 int main(void)
 2 {
 3     //创建结构体变量
 4     struct Student s;
 5 
 6     //结构体变量的初始化
 7     s.name = "张三";
 8     s.age = 22;
 9     s.score = 150;
10 
11     //调用打印学生信息函数
12     stu_info_01(s);
13     cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
14 
15     //stu_info_02(&s);
16     //stu_info_03(s);
17 
18     system("pause");
19     return 0;
20 }

 

 结论:形参改变,实参的值不会改变!

 

地址传递:

 1 //2.地址传递
 2 void stu_info_02(struct Student *p)
 3 {
 4     p->age = 200;
 5     cout << "姓名:" << p->name << " 年龄:" << p->age << " 分数" << p->score << endl;
 6 }
 7 
 8 int main(void)
 9 {
10     //创建结构体变量
11     struct Student s;
12 
13     //结构体变量的初始化
14     s.name = "张三";
15     s.age = 22;
16     s.score = 150;
17 
18     //调用打印学生信息函数
19     //stu_info_01(s);
20     //cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
21 
22     stu_info_02(&s);
23     cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
24 
25     //stu_info_03(s);
26 
27     system("pause");
28     return 0;
29 }

 

 结论:形参改变,实参也改变!

 

引用:

 1 //3.引用
 2 void stu_info_03(struct Student &p)
 3 {
 4     cout << "姓名:" << p.name << " 年龄:" << p.age << " 分数" << p.score << endl;
 5 }
 6 
 7 int main(void)
 8 {
 9     //创建结构体变量
10     struct Student s;
11 
12     //结构体变量的初始化
13     s.name = "张三";
14     s.age = 22;
15     s.score = 150;
16 
17     //调用打印学生信息函数
18     //stu_info_01(s);
19     //cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
20 
21     //stu_info_02(&s);
22     //cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
23 
24     stu_info_03(s);
25     cout << "姓名:" << s.name << " 年龄:" << s.age << " 分数" << s.score << endl;
26 
27     system("pause");
28     return 0;
29 }

 结论:形参改变,实参也改变!

 

posted @ 2020-04-13 21:03  坦率  阅读(379)  评论(0编辑  收藏  举报