const reference const
const(一)
const修饰的各种类型的变量后(包括普通变量,指针,类,结构体和结构体的指针),其初始化的值不可更改
#include <iostream>
using namespace std;
//声明 一个结构体Student
struct Student{int num;
};
int main(int argc, char *argv[])
{ const float pi=3.14; // 用const定义常量picout<<"pi的值 "<<pi<<endl;const struct Student stu={1};cout<<"stu.num的值 "<<stu.num<<endl;const struct Student stua={3};const struct Student stub={4};cout<<"stua.num的值 "<<stua.num<<endl;cout<<"stub.num的值 "<<stub.num<<endl;struct Student stuc;stuc.num=20;const struct Student *pstuc=&stuc;cout << "stuc.num is " << stuc.num <<endl;cout << "*pstuc.num is " << (*pstuc).num <<endl;return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{ int b=2;int a=1;const int *pa=&a;pa=&b;cout<<"pa的值 "<<pa<<endl;cout<<"a的地址 "<<&a<<endl;cout<<"b的地址 "<<&b<<endl;int const *pb = &a;cout<<"const int *pa = &a;这句含义一样"<<endl;int *const pc=&a;*pc=3;cout<<"pc的值 "<<pc<<endl;cout<<"a的值 "<<a<<endl;//第一个const修饰*,所以*pe是常量//第二个const修饰pd,所以pd是常量const int * const pd = &a;int const * const pe = &a;//和const int * const pd = &a;含义一样return 0;
}
#include <iostream>
using namespace std;struct Student{int num; };int main(int argc, char *argv[])
{ struct Student stua={1};struct Student stub={2};struct Student * const pstua = &stua;//pstu是常量
const struct Student *pstub = &stub;cout<<"pstua的值 "<<pstua<<endl;cout<<"stua的地址 "<<&stua<<endl;cout<<"pstub的值 "<<pstub<<endl;cout<<"stub的地址 "<<&stub<<endl;return 0;
}
常引用(const reference)
当然还有刚见过的引用这个数据类型,所以也就有常引用这种东西了
我们类比指针的const修饰来说明常引用的性质
#include <iostream>
using namespace std;int main(){int a = 1;//const int *pa = &a; *pa不能修改//也就是pa储存的地址对应的变量的值不能改,但是储存地址可以改//int * const pa = &a; pa不能修改//也就是pa储存的地址对应的变量的值可以改,但是储存地址不能变//同样的int b = 1;const int &rb = b;//rb的值不能改变也就是b的值不能通过rb改变//rb = 3;这句代码就是非法的//int & const ra = a; 等价于 int &ra = a;//这句话其实是废话,本来ra对应的被引用变量就不能换//所以我这里编译器对这句话报错了,错误如下//error: 'const' qualifiers cannot be applied to 'int&'getchar();return 0;
}
面有几种const引用的特性
引用可以修饰常量
#include <iostream>
using namespace std;
int main(){
int a = 1;
//int &r = 3;这种代码一看就是错的
//但是const修饰之后就可以正常编译
const int &ra = 3;
cout << "ra is "<< ra << endl;
getchar();
return 0;
}
const reference const相关推荐
- const int *,const int * const和int const *有什么区别?
我总是搞砸了如何正确使用<code>const int* , const int * const和int const * . 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配, ...
- 详解const及const指针
2.4 const限定符 题目来源: 请说出 const char *p, char const *p 和char * const p 的区别 const char *p : 是char型指针,指向c ...
- const int * 、int * const、int const* 、const int a(){ } 和int a()const { }的区别和联系
前言:很多人都把const int * .int * const.int const* 的区别和联系搞混,我自己在学习C++的过程中,也经常性 弄不 清楚,今天特意总结一下,作为学习 ...
- 喜闻乐见的const int *p、int* const p、const int* const p
不废话直接代码示例: 1 void f(const int *p) { 2 3 int b = 10; 4 5 *p = 10; // error 6 7 p = &b; // fine 8 ...
- const char*, char const*, char*const 的区别
把一个声明从右向左读. char * const cp; ( * 读成 pointer to ) cp is a const pointer to char char const * p; p is ...
- const int、const int *、int *cosnt、const int * const、const int 的区别
2018-01-04 创建人:Ruo_Xiao 2018-10-17 修改人:Ruo_Xiao 邮箱:xclsoftware@163.com 修改内容:增加对 delete 指向常量的指针的可行性的说 ...
- int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别
加有const关键字的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = # 1. 可以读自己 2. 可以通过*p改自己 3. 可以 ...
- mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’
编译FAAC-1.28时遇到错误: mpeg4ip.h:126: error: new declaration 'char* strcasestr(const char*, const char*)' ...
- 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const
原文网址:http://www.cnblogs.com/rushuizhijing/archive/2011/08/26/2154737.html 深入理解const char*p,char cons ...
最新文章
- 2.1.3 码元、波特、速率、带宽
- 前端入门:快速开发基于 HTML5 网络拓扑图应用
- 1.4 以查询取代临时变量
- 用树莓派的方式打开小米手机:摇晃手机控制小车,前进后退加转弯,成本不到350元 | 开源...
- SQL Server--用户自定义函数
- -又见GCD -- ACM解决方法
- 欧拉函数 cojs 2181. 打表
- 编译型语言和解释型语言区别,编译器,解释器的区别
- 库克宣布苹果将捐款帮助山西
- 方便面为什么要是波浪形的 它是怎么做到的?
- dell服务器硬盘锁_服务器十大排行
- 开源数字媒体资产管理系统:Razuna安装方法
- DM DBLINK使用笔记
- div实现antd Descriptions描述列表(可灵活修改、固定宽度)
- 2022年上海落户最快方式!本科2年落户上海!硕士1年落户上海!
- access统计班级人数_Excel中怎么快速统计成绩表中分数段人数 - 卡饭网
- OSGi跨bundle调用,jaxb-impl异常
- 2017.05.05FreeCodeCamp前端编程之Javascript实现laohuji
- java如何使用live2d_使用live2d web驱动(网页看板娘)
- 「实在RPA·税务数字员工」助力税务乘上数字化转型快车
热门文章
- 告别Heatmap!人体姿态估计表征新方法SimDR
- ICCV 2021 Oral | 无需法向的大场景点云表面重建
- BEBLID:增强的高效局部图像特征描述符
- 那些珍贵的「视觉SLAM」课程资料总结(补充版/完整版)
- Win10下MySQL_Workbench连接远程主机MySQL5.7
- kafka原理_Kafka动态配置实现原理解析
- breakdancer检测结构变异
- 科学通报:合成微生物群落的构建与应用
- 有监督排序—LDA分析、作图及添加置信-ggord
- TEE综述:植物—土壤反馈(PSF):自然和农业科学间的桥梁