引用
来源:互联网 发布:淘宝分销新手发货流程 编辑:程序博客网 时间:2024/05/04 11:55
一、函数参数引用
交换两个字符串,如下代码所示:
void swap(char *&x, char *&y)//指针引用,传入函数的是实参,不是形参{char *temp;temp = x;x = y;y = temp;}int main(){char *a = "My name is Ann.";char *b = "What's your name?";swap(a, b);return 0;}采用二维指针代替引用
void swap(char **x, char **y)//二维指针代替引用{char *temp;temp = *x;*x = *y;*y = temp;}int main(){char *a = "My name is Ann.";char *b = "What's your name?";swap(&a, &b);//注意是a,b的引用return 0;}
二、函数返回值的引用
const float pi = 3.14f;float f;float f1(float r){f = r*r*pi;return f;}float& f2(float r){f = r*r*pi;return f;}int main(){float f1(float=5.0); //正确,函数f1默认参数调用float& f2(float=5.0);//正确,函数f2默认参数的调用float a = f1();//正确,f1的返回值赋给afloat& b = f1();//错误,函数f1里,f的值回复给一个临时变量temp,该temp有编译器隐式建立,建立该temp的引用b后,函数执行完毕,temp消失,导致错误float c = f2();//正确,f2的返回值未建立隐式临时变量temp,直接将全局变量f返回给主函数float& d = f2();//正确,函数直接使用全局变量的引用}
三、常量引用
class Test{public:void f(const int &arg);private:int value;};void Test::f(const int &arg){arg = 10;//错误,arg是一个常量类型的引用,值在函数体内不能被修改cout << "arg=" << arg << endl;value = 20;}int main(){int a = 7;const int b = 10;int &c = b;//错误,b为常量,c必须为常量引用const int &d = a;a++;d++;//d是常量引用,不能使用常量引用该变变量的值Test test;test.f(a);cout << "a=" << a << endl; //输出,a=8return 0;}
0 0
- 引用
- 引用:...
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- 引用
- DH项目总结一(模板方法模式的使用)
- c++面试题之求整数n范围内的全部质数最佳算法
- 薛斯通道源码
- 数理统计
- Arrays.asList()
- 引用
- JavaScript学习12:事件对象
- C程序变量
- 面向服务的体系架构(SOA)——负载均衡
- 谁在死锁Mutex——用Windbg查找Mutex死锁所有者线程
- 16进制转10进制
- LinkedList
- 解决显示隐藏层中select标签中的option在IE浏览器鼠标移上去就整个DIV都隐藏
- 【莫比乌斯反演】[BZOJ 2820 YY的GCD]