简单的const关键字里面的学问还是挺大的,越是基础的知识越是容易忘却。
1.在c语言中const在C语言中const关键字用来修饰变量名为只读,仅此而已。
也就是说通过变量名不可以修改它的值,但是可以通过得到它的地址来修改他的值。
#includestdio.hintmain(){constinta=10;int*p=(int*)a;*p=20;printf("a=%d\n",a);return0;}
同时被const修饰的全局变量也就是外连接,其他源文件要引用只需要加上extern即可。
被const修饰的全局变量不能以地址的形式进行修改,由于它在内存中位于常量区,他的地址空间是只读的。在C语言中被const的变量是直接被分配内存的。
2.c++中的const2.1c++中const的使用c++中const关键字被用来表示常量,和#define的作用一样。
在C++中能否通过地址来改变它的值,取决于是否给他分配了内存。主要分以下三中情况
1、constinta=10;
这种情况是不分配内存的,直接被写在符号表中,即使后面被分配了内存,那么a的值也不会被改变,输出的值一直都是符号表中的值
```#includeiostreamintmain(){constinta=10;std::cout"originala="astd::endl;int*p=(int*)a;*p=;std::cout"*p="*pstd::endl;std::cout"lasta="astd::endl;return0;}```
测试结果如下图所示:
2、intb=;
constinta=b;
3、constpersonper={"name","id"}
2和3这种情况都是直接分配内存的,并不会被写在符号表中,它的值是可以通过地址访问的方式来改变的。
2.2c++中const的使用建议在c++中尽量将宏定义#define替换为const
由于#define在编译的预处理阶段就替换为相对应的常量,假如#defineMax;那么我们在由于这发生错误,他只会提示出现错误,
而我们换成constintMax=;系统就会提示我们这一行发生了错误,并且定义到相对应的行。
2.3常量指针与指针常量的区别这一题目都是面试中好多公司愿意问的问题,刚好学习到这,就把这块也纳入到本章节中。
指针常量
int*constp;,顾名思义它是一个常量,只不过被指针修饰。
inta=10,b=20;int*constp=a;p=b;//×*p=30;//√
常量指针
constint*p;p是一个常量
inta=10,b=20;int*constp=a;p=b;//√*p=30;//×
写在最后:另外,对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
预览时标签不可点收录于合集#个上一篇下一篇