引用的作用就是给变量取一个别名。
引用的本质就是一个指针常量!!
int& ref = a; --->int* const ref = &a; 这就是为什么引用只能初始化一次!!
int& ref = 10; 是错误的!!
引用意味着可以修改被引用对象,而10是常数不可修改故错误!!
正确用法:const int& ref = 10;
引用语法:
数据类型 &变量名 = 被引用的对象;
数据类型要和被引用的对象类型相同!!!
示例代码:
#include <iostream>
using namespace std;
int main(void)
{
int a = 10;
int& b = a;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
b = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");
return 0;
}
代码运行结果:
修改引用变量的值,被引用的对象的值也会一起改变!!!
引用的注意事项:
①引用必须初始化! //int& a; 此引用是错误的。
②引用一旦初始化完成,不能更改引用。
引用作为函数参数:
当引用作为函数参数的时候,可已实现形参修饰实参!!
#include <iostream>
using namespace std;
/*值传递*/
void swap1(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
/*引用做函数参数*/
void swap2(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
int main(void)
{
int a = 20, b = 10;
swap2(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");
return 0;
}
代码运行结果:
通过swap2函数实现了实参a,b的交换。
引用作为函数返回值:
#include <iostream>
using namespace std;
/*返回静态变量的引用*/
int& test1() {
static int a = 20;
return a;
}
int main(void)
{
int& ref = test1();
cout << "ref = " << ref << endl;
/*当返回值是引用时,函数可以作为左值*/
test1() = 100;
cout << "ref = " << ref << endl;
system("pause");
return 0;
}
EX : 返回值会引用的时候,不要返回局部变量!!!!
可以返回静态变量的引用,因为他由系统释放!
当函数返回值为引用的时候,函数可以作为左值!!