一、什么是引用
(1)引用是变量的一个别名,是某个已存在变量的另一个名字
(2)这个变量名功能比传统变量名更特殊,是直达地址的。
二、引用和指针的区别
(1)不存在空引用,引用必须连接到一个合法的内存;
(2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
(3)引用必须在创建时被初始化;指针可以在任何时候被初始化。
三、如何声明引用变量
(1)声明引用变量
int& r = i; //为 i 声明引用变量
//& : 读作 “ 引用 ”
//r : 是一个初始化为 i 的整形引用
(2)声明引用变量步骤
为变量 i 声明引用变量
int i; //创建整形变量
int& r = i; //为 i 声明整形变量
i = 10;
cout << i << endl; // i 和 r 的结果一致
cout << r << endl;
引用在函数中作为形参使用
void func(int& a,int& b) //和void func(int* a,int* b)结果一致
{
a = 10;
b = 15;
}
int mian()
{
int x;
int y;
func(x,y);
cout << x << y << endl;
}
附示例代码
/*
验证在C++中如何使用引用
交换两数的值
*/
#include <iostream>
using namespace std;
//交换两数的值
void swap(int& a,int& b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 10;
int b = 15;
cout << "交换前a = " << a;
cout << "交换前b = " << b << endl;
swap(a,b);
cout << "交换后a = " << a;
cout << "交换后b = " << b;
return 0;
}
引用作为返回值使用:
使用引用直接改变函数中变量的内容
直接附代码,代码中又说明
/*
使用引用作为返回值使用
使用引用直接改变函数中变量的内容
*/
#include <iostream>
using namespace std;
double value[] = {23.5, 23.8, 34.6, 89.3, 56.9};
double& setValue(int i)
{
double& ret = value[i];
return ret; //解释二:这里返回的是value[i]的引用而不是他的值
}
int main()
{
//解释一:当函数setValue()退出后更改他的返回值 = 10.23
setValue(3) = 10.23; //通过引用直接修改被调函数的值
cout << "输出" << value[3] << endl;
return 0;
}
(1)函数退出后给他的返回值赋值,
(2)被调函数的返回值是引用而不是他的值,直接操作他的地址,更改了数组的第三个元素。