欢迎来到 L H S 的博客

早餐,人生的一半,今天也要元气满满哦。| 凤兮凤兮归故乡,遨游四海求其凰。凤凰鸣矣,于彼高岗;梧桐生矣,于彼朝阳。| 死亡本是轮回的归宿,因所爱而无畏。| 有一美人兮见之不忘,一日不见兮,思之如狂。邂逅你,是生生世世的宿命。。。。。|

C++面向对象——第一次作业

一、课题

函数参数传递的三种方式

二教学目的

理解并能充分运用三种函数参数传递方式

三.教学过程

函数参数传递有:值传递、地址传递(指针传递)、引用传递

定义

1.值传递

仅仅是把实参的值传递给形参,之后形参的值无论如何变化都与实参无关

2.地址传递

将实参的地址传递给形参,形参从而指向实参的地址,在形参发生改变时,相当于指向实参地址中的值发生改变

3.引用传递

形参相当于直接引用了实参,并不是简单的把实参的值赋值给形参,形参的变化相当于实参在变化

实验说明

1.值传递

 void swap1(int p, int q)
 {
	     int temp;
	     temp = p;
	     p = q;
	     q = temp;
		 cout << p << " " << q << endl;
 }
 int main()
 {
	     int a = 1, b = 2;
	     swap1(a, b);
	     //swap2(&a,&b);
		     //swap3(a,b);
		     cout << a << "  " << b << endl;
	     return 0;
 }

由此,我们可以看见其实形参p,q的值是交换了的,但是最终输出的a,b值并没有交换。因为值传递是仅仅传值,实参a,b不受影响。

2.指针传递

void swap2(int *p, int *q)
 {
	     int temp;
	     temp = *p;
	     * p = *q;
	    * q = temp;
 }
 int main()
 {
	     int a = 1, b = 2;
	     //swap1(a, b);
	     swap2(&a,&b);
		     //swap3(a,b);
		     cout << a << "  " << b << endl;
	     return 0;
 }

a,b的值实现了交换,在这个过程中,相当于将a,b的地址赋给p,q,之后交换地址中的值,从而a,b所在地址中的值也跟着变。

3.引用传递

void swap3(int &p, int &q)
 {
	     int temp;
	     temp = p;
	     p = q;
	     q = temp;
 }
int main()
 {
	     int a = 1, b = 2;
	     //swap1(a, b);
	     //swap2(&a,&b);
		     swap3(a,b);
		     cout << a << "  " << b << endl;
	     return 0;
 }

a,b的值实现了交换,这儿相当于直接引用了实参,即形参不再是传递实参的值,而是形参变成了实参。当然p,q的交换就是a,b的交换。

posted @ 2019-09-15 17:08  小囡囡不成仙  阅读(152)  评论(0编辑  收藏  举报