标签: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