引用——C++

1.定义

        创建一个字符,来代替原本的变量名字,作用和指针和宏定义类似。

2.语法格式

        int &a=b;   (a是别名)

3.语法注意事项

        1.引用必须初始化(错误示范:int &a;)

        2.引用初始化之后不可再去引用别人(错误示范:int &a=b;  int &a=c;)

4.引用做函数参数(引用传递)

        除了值传递和地址传递的又一函数传递方式(值传递与地址传递区别),其作用相当于简化了的地址传递。

#include<iostream>
using namespace std;

void fun(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}
int mian()
{
    int a=10,b=20;
    fun(a,b);
    cout<<"a:"<<a<<"b:"<<b<<endl;
}

       输出之后a,b的值会互换。

5.引用做函数返回值

    注意:   

1.不可引用局部变量

(因为局部变量存放在栈区,子函数执行结束后会自动释放)

#include<iostream>
using namespace std;
#include<string>
//这里的&不能去,去了之后返回的就是一个常数了
int &fun()
{
	int a = 10;
	return a;
}
int main()
{
    //为了方便理解,可以把fun()想成a,这是一个变量,而平常的函数返回的都是一个常数。
	int &b = fun();
	cout << "a:" << b << endl;
	cout << "a:" << b << endl;
	system("pause");
}

这样的话会输出一串野地址,结果如下图

此外,如果去掉子函数中的&,报错结果如下

函数更改方法:在局部变量前面加上static,将其变为静态变量

2.引用调用可以作为左值

也就是说在函数外部可以修改函数结果

#include<iostream>
using namespace std;
#include<string>
//这里的&不能去,去了之后返回的就是一个常数了
int& fun()
{
	static int a = 10;
	return a;
}
int main()
{
	//为了方便理解,可以把fun()想成a,这是一个变量,而平常的函数返回的都是一个常数。
	int& b = fun();
	cout << "fun:" << b<< endl;
	fun() = 1000;
	cout << "fun:" << b<< endl;
	system("pause");
}

6.常量引用

错误示范:int &a=10;

正确语法:const int &a=10;

(因为加上const之后,在编译器会将代码改为 int temp=10;int &a=temp;)

(不过需要注意,加上const之后,不能再进行赋值操作了,例如a=20;就是不被允许的)

使用场景:在形参中使用const类型,防止形参被修改

#include<iostream>
using namespace std;
#include<string>
int fun(const int &a)//防止被修改
{
	a = 10;
	return a;
}
int main()
{
	int& b = a;
    fun(a);
	cout << "b:" << b<< endl;
	system("pause");
}

7.引用的本质

引用的本质是一个指针常量。作为指针的简化版本,比指针更方便,但实质上还是指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值