C++中引用和const关键字怎么用
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,今天小编给大家分享一下C++中引用和const关键字怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
千家信息网最后更新 2025年11月06日C++中引用和const关键字怎么用
今天小编给大家分享一下C++中引用和const关键字怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
引用
下面的写法定义了一个引用,并将其初始化为引用某个变量。
类型名 & 引用名 = 某变量名;
int n = 4;int & r = n; // r 引用了n,r的类型是 int &
某个变量的引用,等价于这个变量,相当于该变量的一个别名。
int n = 7;int & r = n; // r 引用了n,r和n就是一回事r = 4;cout << r; // 输出4cout << n; // 输出4n = 5;cout << 4; // 输出5
定义引用时一定要将其初始化成引用某个变量。
初始化之后,它就一直引用该变量,不会再引用别的变量了。
引用只能引用变量,不能引用常量和表达式。
double a = 4, b = 5;double & r1 = a; // r1引用了adouble & r2 = r1; // r2也引用了ar2 = 10; // a修改为10cout << a << endl; // 输出10r1 = b; // 用b的值对r1进行赋值,并非r1改为引用b,因为引用是"从一而终"的cout << a << endl; // 输出5
常引用
定义引用时,前面加const关键字,即为"常引用"。
int n;const int & r = n; // r的类型是const int &
不能通过常引用去修改其引用的内容:
并不是说引用的内容不能被修改
int n = 100;const int & r = n;r = 200; // 编译错误n = 300; // ok
常引用和非常引用的转换
const T &和T &是不同的类型。
T &类型的引用或T类型的变量可以用来初始化const T &类型的引用。
const T类型的常变量和const T &类型的引用则不能用来初始化T &类型的引用,除非进行强制类型转换。
const关键字用法
1)定义常量
const int MAX_VAL = 23;const double PI = 3.14;const string NAME = "Tommy";
2)定义常量指针
不能通过常量指针修改其指向的内容,但内容本身可以被修改,且常量指针的指向可以变化。
int n, m;const int *p = &n;*p = 5; // 编译错误n = 4; // okp = &m; // ok,常量指针的指向可以变化
不能把常量指针赋值给非常量指针,反过来可以。
const int *p1;int *p2;p1 = p2; // okp2 = p1; // errorp2 = (int*)p1; // ok,强制类型转换
[注] 因为常量指针对其所指向的内容没有修改权限,自然也不能赋予别的指针这样的权限。否则,非常量指针接收常量指针的赋值之后,便可以修改所指向的内容了,这存在一定安全隐患。
函数参数为常量指针时,可避免函数内部不小心改变参数指针所指地方的内容。
void MyPrintf(const char *p){ strcpy(p, "this"); // 编译出错 printf("%s", p); // ok}3)定义常引用
不能通过常引用修改其引用的变量
int n;const int & r = n;r = 5; // errorn = 4; // ok
以上就是"C++中引用和const关键字怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
变量
类型
指针
常量
内容
指向
输出
关键
关键字
知识
篇文章
编译
C++
不同
函数
参数
就是
权限
错误
面的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百卓网络技术 拖欠工资
搜索数据库怎么设置密码
网络技术人才推荐信
工业园区营销网络技术哪个好
网络安全小学主题班会教案
雅之网络技术
工信部java软件开发证书
网络安全和信息化建设专项审计
db2数据库导入6
服务器pcie加装显卡
4g软件开发工程师
太仓智能网络技术
学分制 数据库
非亲生子dna数据库
网络技术革新教育
计算机网络技术本科就业方向
新疆网络安全排查通报
公司数据库工作
电信网络安全宣传进校园
校园网络安全手抄报简单易画
泰克网络技术深圳有限公司
腾讯虚拟服务器组
数据库评级
中国论文数据库网
广东定制软件开发中心
内网外连网络安全宣传
手机软件开发环境
手册排版软件开发
复杂的数据库查询语句
甘肃兰州dns服务器地址云空间