const修饰详解

简介: const修饰详解

我们写出以下代码


int main()
{
  int num = 10;
  num = 20;
  printf("%d", num);
  return 0;
}


运行结果如下

49517c0e589644ceaea6d08a6c376756.png


我们发现num的值是可以被修改的


但是我现在不想要num的值被修改  我应该怎么做呢?


我们说 可以在num前面加上一个const修饰 这样它就具有了常属性


(关于常量的四种表示形式大家可以参考我的这篇博客常量的四种表示形式)


我们在修改试试


80388a54973847c1a849b7920363d5ed.png


我们会发现程序开始报错了 因为这个时候的num已经具有了常属性


那么有没有什么方法可以修改num的值呢? 答案是有的  


836a2fffa5b2450fb08ae1be04d3a902.png


我们使用一个指针来修改就可以了


那么在指针勉强能不能使用const修饰呢?


答案是可以 而且修饰的范围不同效果作用也不同  


1 当const放在  *  左边的时候


fb49098db0124e3280382d4ac6c2936e.png


就表示*p指向的内容不能修改


但是指针变量本身可以修改


如下图  


3c5ee09ec8554e24940d5a2abd8c84a1.png


但是还有一点要注意的是


竟然指针p指向了ret 但是它仍然不能修改ret的值


c2c9942762284fc88aad0c34270d70df.png



2. 当const放在  *  右边的时候


c94de0f5058a470187830a28325551bb.png


我们仍然可以使用解引用p来修改num的值


但是却不能让p指向其他的地址


这就是const放在*前后的区别


以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够


不吝赐教 在评论区或者私信指正 博主一定及时修正


那么大家下期再见咯


相关文章
|
6月前
|
数据安全/隐私保护 C++
C++ const 限定符的全面介绍(二)
C++ const 限定符的全面介绍(二)
72 0
|
6月前
|
C++
C++ const 限定符的全面介绍(一)
C++ const 限定符的全面介绍(一)
64 0
|
6月前
|
消息中间件 Kubernetes NoSQL
static、const关键字
static、const关键字
|
4月前
const修饰指针
const修饰指针
23 0
|
编译器 C语言 C++
const修饰的究竟是常量还是变量?
const修饰的究竟是常量还是变量?
92 0
|
6月前
|
编译器 C++
|
6月前
|
编译器 C++
在 C++ 中const 成员函数的运用
在 C++ 中const 成员函数的运用
|
6月前
|
C++
C++类中的const使用
C++类中的const使用
|
6月前
|
C++
c++中const修饰成员函数的问题
问题引入: 看下面这一段代码:
52 0
趣味讲解const修饰指针变量
趣味讲解const修饰指针变量
53 0