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