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相关推荐

  1. const int *,const int * const和int const *有什么区别?

    我总是搞砸了如何正确使用<code>const int* , const int * const和int const * . 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配, ...

  2. 详解const及const指针

    2.4 const限定符 题目来源: 请说出 const char *p, char const *p 和char * const p 的区别 const char *p : 是char型指针,指向c ...

  3. const int * 、int * const、int const* 、const int a(){ } 和int a()const { }的区别和联系

    前言:很多人都把const int * .int * const.int const* 的区别和联系搞混,我自己在学习C++的过程中,也经常性          弄不 清楚,今天特意总结一下,作为学习 ...

  4. 喜闻乐见的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 ...

  5. const char*, char const*, char*const 的区别

    把一个声明从右向左读. char * const cp; ( * 读成 pointer to ) cp is a const pointer to char char const * p; p is ...

  6. 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 指向常量的指针的可行性的说 ...

  7. 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.       可以 ...

  8. 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*)' ...

  9. 深入理解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 ...

最新文章

  1. 2.1.3 码元、波特、速率、带宽
  2. 前端入门:快速开发基于 HTML5 网络拓扑图应用
  3. 1.4 以查询取代临时变量
  4. 用树莓派的方式打开小米手机:摇晃手机控制小车,前进后退加转弯,成本不到350元 | 开源...
  5. SQL Server--用户自定义函数
  6. -又见GCD -- ACM解决方法
  7. 欧拉函数 cojs 2181. 打表
  8. 编译型语言和解释型语言区别,编译器,解释器的区别
  9. 库克宣布苹果将捐款帮助山西
  10. 方便面为什么要是波浪形的 它是怎么做到的?
  11. dell服务器硬盘锁_服务器十大排行
  12. 开源数字媒体资产管理系统:Razuna安装方法
  13. DM DBLINK使用笔记
  14. div实现antd Descriptions描述列表(可灵活修改、固定宽度)
  15. 2022年上海落户最快方式!本科2年落户上海!硕士1年落户上海!
  16. access统计班级人数_Excel中怎么快速统计成绩表中分数段人数 - 卡饭网
  17. OSGi跨bundle调用,jaxb-impl异常
  18. 2017.05.05FreeCodeCamp前端编程之Javascript实现laohuji
  19. java如何使用live2d_使用live2d web驱动(网页看板娘)
  20. 「实在RPA·税务数字员工」助力税务乘上数字化转型快车

热门文章

  1. 告别Heatmap!人体姿态估计表征新方法SimDR
  2. ICCV 2021 Oral | 无需法向的大场景点云表面重建
  3. BEBLID:增强的高效局部图像特征描述符
  4. 那些珍贵的「视觉SLAM」课程资料总结(补充版/完整版)
  5. Win10下MySQL_Workbench连接远程主机MySQL5.7
  6. kafka原理_Kafka动态配置实现原理解析
  7. breakdancer检测结构变异
  8. 科学通报:合成微生物群落的构建与应用
  9. 有监督排序—LDA分析、作图及添加置信-ggord
  10. TEE综述:植物—土壤反馈(PSF):自然和农业科学间的桥梁