const关键字的用法
目录
1.C语言中const的用法
1.修饰局部变量
2.修饰全局变量
3.常量指针与指针常量
4.修饰函数的参数
5.修饰函数的返回值
2.C++中const的用法
1.const修饰成员变量
2.const修饰成员函数
1.C语言中const的用法
1.修饰局部变量
const int n=10;
int const n=10;
这两种写法是一样的,都表明变量n的值不能被改变了。
注意:用const修饰变量时,一定要给变量初始化,否则之后不能再给变量赋值。
接下来看看const修饰常量静态字符串,例:
const char* str="abcdefg";
如果没有const的修饰,我们可能会写出str[2]='a'这样的代码,这样会对该只读内存的常量字符串的内容进行修改,程序会异常终止。用const修饰后,这个错误就能在程序被编译的时候就立即检查出来。
2.修饰全局变量
全局变量的作用域是整个文件,我们应该尽量避免使用全局变量,因为一旦有一个函数改变了全局变量的值,它也会影响到其他引用这个变量的函数,导致除了bug后很难发现,如果一定要用全局变量,我们应该尽量的使用const修饰符进行修饰,这样防止不必要的人为修改,使用的方法与局部变量是相同的。
3.常量指针与指针常量
常量指针:指针所指向的内容是常量。
有以下两种定义方式。
const int* n;
int const *n
注意:
1.常量指针说的是不能通过这个指针改变变量的值,但还是可以通过其他的方式来改变变量的值的
int a=10;
const int* p=&a;
a=20;//可以改变a的值
*p=20;//会报错
2.常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变,常量指针可以指向其他的地址。
int a=10;
int b=20;
const int* p=&a;
p=&b;
指针常量:指针本身是个常量,不能再指向其他的地址。写法如下:
int *const p;
注意:指针常量指向的地址不能改变,但是地址中保存的数值是可以改变的,可以通过其他指向改地址的指针来修改。
int a=10;
int *q=&a;
int* const p=&a;
*q=20;//a的值可以改变
常量指针与指针常量的区分:
关键就在于*的位置,我们以*为分界线,如果const在*的左边,则为常量指针,如果const在*的右边则为指针常量。如果我们将*读作‘指针’,将const读作‘常量’的话,内容正好符合。int const * n;是常量指针,int *const n;是指针常量。
指向常量的常指针:是以上两种的结合,指针指向的位置不能改变并且也不能通过这个指针改变变量的值,但是依然可以通过其他的普通指针改变变量的值。
const int* const p;
4.修饰函数的参数
1.防止修改指针指向的内容
void StringCopy(char *strDestination, const char *strSource);
给 strSource 加上 const 修饰后,如果函数体内的语句试图改动 strSource 的内容,编译器将报错。
2.防止修改指针指向的地址
void Swap(int* const p1,int* const p2);
指针p1和p2的指向的地址都不能修改。
3.以上两种的结合
5.修饰函数的返回值
如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。
例如函数
//例如函数:
const char *GetString();char *str=GetString();//编译错误const char *str=GetString();//正确写法
2.C++中const的用法
C++中const包含了C语言中const的用法,这里只讲C++中const新增加的用法
1.const修饰成员变量
class A
{
public:A(int a):_a(a){}
private:const int _a;
};
只能通过构造函数初始化列表进行初始化;不同类对其const数据成员的值可以不同,所以不能在类中声明时初始化。
2.const修饰成员函数
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
const关键字的用法相关推荐
- C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...
详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...
- C/C++中const关键字的用法及其与宏常量的比较
1.const关键字的性质 简单来说:const关键字修饰的变量具有常属性. 即它所修饰的变量不能被修改. 2.修饰局部变量 1 const int a = 10; 2 int const b = 2 ...
- C语言中const关键字的用法
转载请注明出处http://blog.csdn.net/xingjiarong/article/details/47282255 关键字const用来定义常量,如果一个变量被const修饰,那么它的值 ...
- static 和 const 关键字的用法总结
static的作用: 对变量: 1.局部变量: 在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量. 1)内存中的位置:静态存储区 2)初始化:未经初始化的全局静态变量会被程序 ...
- C++中const关键字用法详解及实例和源码下载(一)
最近在学习C++基础部分,看了两天书,已经看过了一遍,半知半解,回过头来重新看第二遍,深入了解一下C++的基础知识.现在读到了const关键字的用法,书上面讲解的时候并没有给出完整的实例,只是理论的讲 ...
- C++中的const关键字(zz)
[补充]mutable关键字 有时我们希望类的数据成员即使在const成员函数中,依然是可以修改的,这时就可以把它们声明为mutable来实现.这样的应用,比如记录各种操作的调用次数,这时,即使在co ...
- const 关键字详解
const 关键字详解 一.const关键字简介 二.const的用法 1.修饰局部变量.全局变量以及字符串常量 2.修饰指针 3.修饰函数的参数 4.修饰函数的返回值 5.const成员函数(C++ ...
- 【C 语言】const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )
文章目录 一.const 普通用法 二.常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 ) 三.指针常量 ( 指针不能被修改 ) 三.指向 常量 的 指针常量 四.const 在 * 左 ...
- const关键字及其作用(用法),C语言const详解
const 在实际编程中用得并不多,const 是 constant 的缩写,意思是"恒定不变的"!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字. 1.con ...
最新文章
- JAVA byte[] String
- require.js基本认识
- 链表中环的入口结点 python_链表中环的入口结点
- java扫雷教程_java实现简单扫雷游戏
- 利用for循环打印出不同的三角形
- L2-015. 互评成绩-PAT团体程序设计天梯赛GPLT
- RDMA的原理、传输与Verbs
- 【渗透测试】利用永恒之蓝漏洞实现桌面监控
- 关于电感数字传感器的一些问题
- 重磅发布|主机安全联动蜜罐解决方案助力大型攻防演练
- mysql在线检测文件是否损坏,mysql数据文件损坏后的修复方法
- 自棱镜事件,隐私保护搜索引擎DuckDuckGo流量增长600%
- 关于javaBean运行后出现Name was not previously introduced as per JSP.5.3的解决方法
- Seq2Seq and NMT(基于cs224n的最全综述神经机器翻译技术)
- 在HTML中 怎么一张图片上在放一张图片,css sprites把很多小图集成在一张图片上...
- xshell和xftp免费使用方法
- 微信小程序直播,腾讯云直播+微信小程序实现实时直播
- jenkins自动打包并向Harbor推送镜像
- 图片加载 二维码 解析
- 自然语言成了编程语言,不会写 Prompt 的程序员会面临失业吗?