当前位置: 首页 > news >正文

【C++】1___引用

一、基本语法

数据类型   &别名  =   原名

#include<iostream>
using namespace std;
int main(){int a = 10;int &b = a;cout<<"a="<<a<<endl; // a=10cout<<"b="<<b<<endl;// a=10b = 20;cout<<"a="<<a<<endl;// a=20cout<<"b="<<b<<endl;// a=20return 0;
}

 注意:1、引用必须初始化

            2、一旦初始化,就不能更改

二、做函数参数、返回值

做函数参数,与地址传递效果相同,形参会修饰实参

#include<iostream>
using namespace std;
void test(int &a,int &b){int tmp = a;a=b;b=tmp;
}int main(){int a = 10;int b = 20;test(a,b);cout<<"a="<<a<<endl;  // a=20cout<<"b="<<b<<endl;  // b=10return 0;
}

 做函数返回值,返回静态变量引用。

在有些编译器中,返回局部变量引用时,首次会返回正确,以后就会返回一个错误值(原因是首次访问时编译器对局部变量做了保留,后面会将这个栈区的内容释放掉)

#include<iostream>
using namespace std;
int& test(){static int a = 10;return a;
}int main(){int& ref = test();cout<<"ref="<<ref<<endl; // ref=10ref = 1000;cout<<"ref="<<ref<<endl; // ref=1000return 0;
}

三、本质

本质就是一个指针常量

数据类型   &别名  =   原名   -->    数据类型  *const  别名 =  &原名

#include<iostream>
using namespace std;int main(){int a = 10;int &b = a;  // 相当于 int * const b = &a; 这里也说明引用后就不能更改b = 20;  // 相当于 *b = 20;return 0;
}

四、常量引用

 可以利用常量函数防止误操作修改值

#include<iostream>
using namespace std;int main(){//	int &b = 10;  // 错误,需要一个合法的内存空间const int &b = 10;  //正确,编译器自动转化为:int tmp = 10;  const int &b = tmp;  (tmp只是举例,具体由编译器决定)
//	b = 20;	 //加上const后不可修改变量cout<<"b="<<b<<endl;  //b=10return 0;
}
http://www.lryc.cn/news/495965.html

相关文章:

  • 如何通过 JWT 来解决登录认证问题
  • 高效集成:将聚水潭数据导入MySQL的实战案例
  • Jenkins-基于 JNLP协议的 Java Web 启动代理
  • Qt数据库操作-QSqlQueryModel 的使用
  • C语言编程1.21波兰国旗问题
  • 如何利用微型5G网关为智慧无人矿车提供精确定位
  • 使用docker-compese部署SFTPGo详解
  • Ajax基础总结(思维导图+二维表)
  • Spring Task和WebSocket使用
  • 微信小程序 本地调试和vconsole可以 但在体验上页面不请求数据
  • QT:将QTableWidget内容写入txt文件中
  • 前端面试题(六)
  • 「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
  • Leetcode581. 最短无序连续子数组(HOT100)
  • HTML前端开发-- Flex布局详解及实战
  • 基于JWT跨语言开发分布式业务系统的挑战与实践:多语言协作的最佳方案
  • 二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(2)
  • 什么是 Kata Containers?
  • SpringMvc项目配置RabbitMq
  • shell编程(4)脚本与用户交互以及if条件判断
  • vue2组件跨层级数据共享provide 和 inject
  • springboot/ssm校园闲置物品交易系统ava大学生二手闲置交易平台web二手源码
  • Redis实现限量优惠券的秒杀
  • Linux centOS 7 安装 rabbitMQ
  • 活着就好20241202
  • 自由学习记录(28)
  • 操作系统、虚拟化技术与云原生01
  • linux的挂卸载
  • 【和春笋一起学C++】OpenCV中数组和指针运用实例
  • Maya 中创建游戏角色的头发,并将其导出到 Unreal Engine 5