标签:c++ primer c++ c语言
int a=1; int &b=a; // b是a的别名,因此a和b是同一个单元
(3)注意:定义引用时一定要初始化,指明该引用变量是谁的别名
#include <iostream> using namespace std; int main(void) { int val = 100; //int& refval; Error,引用必须初始化 int& refval = val; refval = 200; // 将200赋值给refval // 实际上改变的是val这个变量 cout << "val=" << val << endl; int val2 = 500; refval = val2; // 不代表将refval引用至val2这个变量 // 仅仅只是代表将val2赋值给refval,改变的还是val的值 cout << "val=" << val << endl; return 0; }
2、示例
#include <iostream> using namespace std; int main(void) { const int val = 1024; const int& refval = val; //int& ref2 = val; // Error,nonconst reference to const object //refval = 200; Error,refval是一个常量 int val2 = 1024; const int& ref3 = val2; //const reference to nonconst object double val3 = 3.14; const int& ref4 = val3; // int temp = val3; // const int& ref4 = temp; cout << "ref4=" << ref4 << endl; cout << "val3=" << val3 << endl; //int& ref5 = val3; Error ,不会产生中间变量 return 0; }
运行结果:
ref4=3
val3=3.14
#include <iostream> using namespace std; void swap(int &x, int &y); int main() { int a, b; a = 10; b = 20; swap(a, b); //在函数调用时,引用被初始化x = a, y = b; cout << "a=" << a << "b=" << b << endl; return 0; } void swap(int &x, int &y) { int temp; temp = x; x = y; y = temp; }
运行结果:
a=20b=10
#include <iostream> using namespace std; // 引用作为函数返回值 int a[] = {0,1,2,3,4}; int& index(int i) { return a[i]; //全局变量 } int main(void) { index(3) = 100; // 引用作为函数返回值,使得函数可以放在赋值运算符左边 // 函数返回引用,引用在函数返回的时候初始化 // index(3)在函数返回的时候被初始化为a[3]; cout << "a[3]=" << a[3] << endl; return 0; }
#include <iostream> using namespace std; int& add(int a, int b) { int sum; sum = a + b; return sum; // 不能返回对局部变量的引用 } int main(void) { int n = add(3, 4); int& n2 = add(5, 6); // n2是引用,没有自己独立的空间 // n2的值依赖于它所引用的变量 // 如果n2所引用的变量的生命期结束了,也就是说n2是一个 // 无效的引用,那么n2的值将是不确定的。 cout << "n2=" << n2 <<endl; //可能还没被 n 覆盖,因此正确 cout << "n=" << n << endl; cout << "n2=" << n2 << endl; return 0; }运行结果:
参考:
C++ primer 第四版
C++ primer 第五版
版权声明:本文为博主原创文章,未经博主允许不得转载。
C++ Primer 学习笔记_17_从C到C++(3)--引用、const引用、引用传递、引用作为函数返回值、引用与指针区别
标签:c++ primer c++ c语言
原文地址:http://blog.csdn.net/keyyuanxin/article/details/48829249