前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++中的引用

C++中的引用

作者头像
From Zero
发布2021-03-11 11:10:45
1.1K0
发布2021-03-11 11:10:45
举报
文章被收录于专栏:C语言C语言

C++中的引用

注意:(写在前面)

0.引用的本质是别名。

1.必须初始化

2.必须引用一块合法的内存

代码语言:javascript
复制
int & t = 10;//不合法,没有合法内存
const int & r = 10;//编译器会自动创建内存
r = 9;//不可以,const 只读

3.引用的本质:

引用的本质是一个指针常量。指针常量的指向不能改变

对于我们,引用只是别名,关于指针、调用、地址等操作都由编译器完成。

4.引用初始化后不能再更改。

代码语言:javascript
复制
int a = 8;
int b = 3;
int& p = a;
p = b;//只能赋值
cout<
1.函数传参的引用传递
代码语言:javascript
复制
void swap(int& a, int& b){//引用传递,形参会修饰实参
 int t;
 t = a;
 a = b;
 b = t;
}//可以完成交换

int main(){
	int a = 1;
	int b = 2;
	cout<
2.引用做函数的返回

1.不要返回局部变量的引用

(第一次调用可以输出局部变量的值,因为编译器做了保留;应该是非法操作)

解决方法:在局部变量前加static,存入全局区(全局区数据在程序结束才释放)

2.函数的调用可以作为左值

可以通过等号赋值,赋值到函数返回的引用指向的变量。

代码语言:javascript
复制
int& fun() {
	int a = 9;
	return a;
}

int main() {
	int &b = fun();
	cout << b << endl;//正常输出9
	fun() = 12;//用别名访问fun()中的a,对其进行赋值
	cout << b << endl;//将输出12
}
3.常量引用

修饰形参,防止误操作(主要是告诉用户不修改参数)

否则按引用传递参数时,在函数中改变形参,外部的实参数据也会发生改变。(因为指向同一块内存)

代码语言:javascript
复制
//在函数中修改就是下面这样:
void print(int& a){
	a = 2;
	cout<
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++中的引用
    • 注意:(写在前面)
      • 1.函数传参的引用传递
        • 2.引用做函数的返回
          • 3.常量引用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档