一般情况下,赋值表达式的左边只能是变量名,即被赋
值的对象必须是变量,只有变量才能被赋值,常量或表达式不能被赋值,但如果一个函数的返回值是引用时,赋值号的左边可以是该函数的调用。
声明方式: const 类型标识符 &引用名=目标变量名;
用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。
例2-27 #include “iostream.h” double &fn(const double &pd) { static double ad=32; ad+=pd; cout<<pd<<endl; return ad; } void main() { double a=100.0; double &pa=fn(a); cout<<pa<<endl; a=200.0; pa=fn(a); cout<<pa<<endl; }程序运行的结果
100 132 200 332 引用总结(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大对象的传递效率和空间不如意的问题。
(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。
(3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作,程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
课后练习题目 #include<iostream.h> int &max(int &num1,int &num2); // 返回一个较大值 int &min(int &num1,int &num2); // 返回一个较小值 main() { int num1, num2; cout<<"Enter the first number: "; cin>>num1; cout<<"Enter the second number: "; cin>>num2; max(num1,num2)=0; cout<<"\nAfter putting zero in largest, the numbers are"; cout<<"\n"<<num1<<" and "<<num2<<"\n"; cout<<"\nNow, please enter two more numbers.\n"; cout<<"Enter the first number :"; cin>>num1; cout<<"Enter the second number:"; cin>>num2; min(num1, num2)=0; cout<<"\nAfter putting zero in smallest the numbers are"; cout<<"\n"<<num1<<" and "<<num2<<"\n"; return 0; } int &max(int &num1,int &num2) { return (num1>num2)?num1:num2; } int &min(int &num1,int &num2) { return (num1<num2)?num1:num2; }