实验二 引用与函数
一、实验目的和要求
1.熟悉引用的概念,掌握引用的定义和方法,学会引用在C++程序中的应用。
2.掌握函数的定义和调用方法。
3.练习重载函数的使用。
二、实验内容
1.调试下列程序,写出输出结果,并解释输出结果
(1)
- <span style="font-size:18px;">//sy2_2.cpp
- #include<iostream>
- using namespace std;
- int main()
- {
- double dd=3.9,de=1.3;
- double &rdd=dd,&rde=de;
- cout<<rdd+rde<<','<<dd+de<<endl;
- rdd=2.6;
- cout<<rdd<<','<<dd<<endl;
- de=2.5;
- cout<<rde<<','<<de<<endl;
- return 0;
- }
- </span>
运行结果如下:
结果解释如下:
首先,定义一个双精度浮点型(double)的对象dd和de,并给其赋初始值3.9和1.3。然后又定义一个双精度浮点型(double)的引用rdd和rde,并将它们分别与dd和de相联系。这样,无论是对dd、de还是对rdd、rde进行操作,实际上都是对那个原来放着3.9和1.3的物理单元的内容进行操作。第一行输出的结果rdd+rde和dd+de之所以都为5.2是因为开始赋的初始值的和是5.2,“&rdd=dd,&rde=de”相当于给dd和de取一个别名。第二行输出的结果都为2.6,因为给rdd赋了一个初始值2.6,所以输出rdd为2.6,dd也为2.6是因为rdd为dd的别名,它们两个使用同一个地址。第三行输出的结果都为2.5,原因和第二行的原因相同。
(2)
- <span style="font-size:16px;">//sy2_2.cpp
- #include<iostream>
- using namespace std;
- int main()
- {
- void fun(int,int&);
- int a,b;
- fun(2,a);
- fun(3,b);
- cout<<"a+b="<<a+b<<endl;
- return 0;
- }
- void fun(int m,int &n)
- {
- n=m*4;
- }</span>
运行结果果;
结果解释如下:
在这个程序中,在主函数中定义a和b并给a、b赋初始值为2和3。当程序调用函数void fun时,实参a和b分别初始化引用m和n,所以在函数fun中,对m和n的访问就是对a和b的访问,函数fun中改变了main函数中的对象a、b的值,就相当于a=2*4=8,b=3*4=12,a+b=8+12=20。
(3)
- <span style="font-size:18px;">//sy2_3.cpp
- #include<iostream>
- using namespace std;
- int &fun(int);
- int aa[5];
- int main()
- {
- int a=5;
- for(int i(0);i<5;i++)
- fun(i)=a+i;
- for(int i=0;i<5;i++)
- cout<<aa[i]<<" ";
- cout<<endl;
- return 0;
- }
- int &fun(int a)
- {
- return aa[a];
- }
- </span>
运行结果如下
结果解释如下:定义一个整数a并给a赋值为5,先输出a的值5,再利用for循环,i=0,i<5,i++,也每次加1,最后再输出长度为5的数组,也就是5,6,7,8,9。
2.编程完成下列任务
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4.cpp)
编写程序如下:
- <span style="font-size:18px;">#include<iostream>
- using namespace std;
- int main()
- {
- double F=0;
- cout<<"请输入华氏温度F值:"<<endl;
- cin>>F;
- double C=(F-32)*5/9;
- cout<<"摄氏温度为:"<<C<<endl;
- return 0;
- }
- </span>
结果解释如下:定义一个整数a并给a赋值为5,先输出a的值5,再利用for循环,i=0,i<5,i++,也每次加1,最后再输出长度为5的数组,也就是5,6,7,8,9。
2.编程完成下列任务
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4.cpp)
编写程序如下:
- <span style="font-size:18px;">#include<iostream>
- using namespace std;
- int main()
- {
- double F=0;
- cout<<"请输入华氏温度F值:"<<endl;
- cin>>F;
- double C=(F-32)*5/9;
- cout<<"摄氏温度为:"<<C<<endl;
- return 0;
- }
- </span>
(2)编写重载函数max1可分别求取2个整数、3个整数、2个双精度数和3个双精度数的最大值。(sy2_5.cpp)
三、分析与讨论
1.总结引用的概念及用途。
答:引用的概念:所谓引用,就是给对象取一个别名,使用该别名可以存取该对象。换句话说是使新对象和原对象共用一个地址。这样,无论对哪个对象进行修改,其实都是对同一地址的内容进行修改。因而原对象和新对象(规范的说,是对象和它的引用)总是具有相同的值。
引用的用途:引用的主要用途是用作函数参数和函数值的返回。
2.函数的定义和调用方法。
答:函数的定义:从用户使用的角度来看,C++有两种函数:标准库函数和用户自定义函数。标准库函数有C++系统定义并提供给用户,可以看作对语言功能的扩充。用户根据特定任务编写的函数称为自定义函数。
函数的调用方法:函数的使用时通过函数调用实现。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所提供的实际参数。函数调用的一般形式为: 函数名(<实参数>),其中<实参数>中的各参数用逗号分隔,实参数可以是常量、变量或表达式,与被调用函数形参的个数和类型必须相符。
3.重载函数时通过什么来区分?
答:编译系统是将根据函数参数的类型和个数来判断使用哪一个函数。
四、实验总结
通过本次实验,我学会了自己编写程序,自己构思编写程序的思路,熟悉引用的概念,掌握引用的定义和方法,学会引用在C++程序中的应用。