课程主页在
http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在
云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。
用引用类型作为形参,由于形参与实参实质上就是同一个变量,占用的是同一段内存空间,对形参的改变,实质就是对实参的改变。因此,排序函数中完成的形参的变化,使得在函数调用完后,实参也发生了变化。
用引用类型作为形参,效果上可以达到传地址值相同的效果,但程序的可读性更好了,更易于理解了。
【项目2-引用作形参】
设计一个程序,输入3个整数,将其按从大到小的顺序输出,要求
(1)排序功能通过函数实现,3个整数用3个变量,不必定义数组;
(2)写出两个版本的函数,一个采用传地址值的方法,另一个采用引用类型作参数
参考解答:
在函数调用时,实参的值要传递给形参。当形参是指针时,实参也是指针。形参与实参占用不同的内存空间,但通过传值(传地址值),指向的是同一内存单元。当形参指向的单元的值发生变化,也就是实参指向的空间的变化。
利用指针变量作形参,实现了用调用函数的方法,改变实参的值的目的。
#include <iostream> using namespace std; int main( ) { void sort(int *,int *,int *); int a=2,b=4,c=3; sort(&a,&b,&c); cout<<"sorted order is "<<a<<" "<<b<<" "<<c<<endl; return 0; } void sort(int *i,int *j,int *k) { int t; if (*i>*j) {t=*i;*i=*j;*j=t;} if (*i>*k) {t=*i;*i=*k;*k=t;} if (*j>*k) {t=*j;*j=*k;*k=t;} }
用引用类型作为形参,由于形参与实参实质上就是同一个变量,占用的是同一段内存空间,对形参的改变,实质就是对实参的改变。因此,排序函数中完成的形参的变化,使得在函数调用完后,实参也发生了变化。
用引用类型作为形参,效果上可以达到传地址值相同的效果,但程序的可读性更好了,更易于理解了。
#include <iostream> using namespace std; int main( ) { void sort(int &,int &,int &); int a=2,b=4,c=3; sort(a,b,c); cout<<"sorted order is "<<a<<" "<<b<<" "<<c<<endl; return 0; } void sort(int &i,int &j,int &k) { int t; if (i>j) {t=i;i=j;j=t;} if (i>k) {t=i;i=k;k=t;} if (j>k) {t=j;j=k;k=t;} }
=================== 迂者 贺利坚 CSDN博客专栏================= |== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==| |== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==| |== 我写的书——《逆袭大学——传给IT学子的正能量》 ==| ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ===== |