关于const的用法
1. const修饰整型变量
我们知道,const是一个关键词,在编译的时候起效果。它所修饰的常变量是C语言常量中的一种。
首先通过例子来了解const的用法。
int main()
{const int num = 10;//int与const的位置可换num = 20;printf("%d\n", num);return 0;
}
这个时候,程序马上会报错,会提示:num必须是可修改的左值。因为在这段代码里,const修饰的是num,那就意味着num的值不能被修改。
那const修饰的常变量,都不能被修改吗?
我们来看这段代码:
int main()
{const int a = 10;int * p = &a;*p = 100;printf("%d", a);return 0;
}
我经过运行,得出这个运行结果为100,那也就是说,a虽然是被const修饰,但a的值却被改变了,很明显我们可以看出是通过指针p改变的。因此,我们可以得出一个结论:const修饰的常变量,不能被直接改变,但可以被间接改变。
2. const修饰指针变量
const 修饰指针变量有以下三种情况。
- const 修饰指针指向的内容,则内容为不可变量。
const int *p = 8;
- const 修饰指针,则指针为不可变量。
int a = 8;
int* const p = &a;
*p = 9; // 正确
int b = 7;
p = &b; // 错误
- const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。(实际上是上面两种情况的合并)
int a = 8;
const int * const p = &a;
关于const的用法相关推荐
- 【C 语言】const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )
文章目录 一.const 普通用法 二.常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 ) 三.指针常量 ( 指针不能被修改 ) 三.指向 常量 的 指针常量 四.const 在 * 左 ...
- C语言中const的用法
C语言中const的用法 基本解释 const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解co ...
- C语言const的用法
文章目录 1.const的用法 2.const与define的区别 3.const修饰函数的参数 4.获取视频教程 5.版权声明 1.const的用法 const是constant的缩写,意思是&qu ...
- C++中const关键字用法详解及实例和源码下载(一)
最近在学习C++基础部分,看了两天书,已经看过了一遍,半知半解,回过头来重新看第二遍,深入了解一下C++的基础知识.现在读到了const关键字的用法,书上面讲解的时候并没有给出完整的实例,只是理论的讲 ...
- c语言const用法的位置与意义,const(c语言const的用法详解)
const int *A; //const修饰指向的对象,A可变,A指向的对象不可变 怎么理解?. 呵呵,想法挺独特啊.const在声明变量时有四种用法:int x = 10;int y = 11.c ...
- c语言数组前const的作用,c语言中const的用法
C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现.下面小编就跟你们详细介绍下c语言中const的用法,希望对你们有用. c语言中const的用法如下: const的基本解释 ...
- const的用法,特别是用在函数前面与后面的区别!
在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针.可以改变this所指向的值,但不能改变 this所保存的地址. 在 const成员函数中,this的类型是一个指向 ...
- const的用法,特别是用在函数后面
转自:https://www.cnblogs.com/azbane/p/7266747.html 但是不建议看原文,因为眼睛会瞎!!!!!! 在普通的非 const成员函数中,this的类型是一个指向 ...
- const的用法,特别是用在函数前面与后面的区别
转自:https://www.cnblogs.com/azbane/p/7266747.html 在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针.可以改变this所 ...
最新文章
- java设计模式--原始模型模式
- 据说这是中途接手别人项目时的场景
- 原生js监听input值发生变化
- Linux 服务器如何修改主机名
- Debug Tensorflow: TypeError: Cannot convert a symbolic Keras input/output to a numpy array.
- rank()over 函数的使用
- js 用submit()方法提交表单,页面闪退问题以及解决方法
- Unity3D核心类型一览
- java中的final的使用
- 华罗庚先生教会我如何学习
- 过期域名如何助力犯罪分子攻破企业防御
- ubuntu安装cairo
- python dict排序
- DenseNet解析
- 使用SecureCRT工具上传、下载文件的两种方法
- 批量word转pdf
- IPX5、IPX6、IPX6K冲水方向
- 电池SOC仿真系列-基于Simscape搭建的锂电池模型
- 基于Matlab的数字水印设计
- 斗鱼扩展--拦截广告,让网页加载更快(四)