C语言中const修饰的指针

当用const进行修饰时,根据const位置的不同有三种不同效果。 判断的标准是:const修饰谁,谁的内容就是不可变的。

const修饰指针变量时候有三种情况:

1 const 修饰取值操作(修饰星号*)

int a = 10;
const int* p1 = &a;
const int *p2 = &a;
int const* p3 = &a;
int const *p4 = &a;

以上两种指针p1,p2,p3,p4的声明等价,当const在星号 * 前面,此时可以理解为const修饰的是星号和变量 (*p)(指针的取值操作),限定了指针p1-p4取值操作是只读的,不能修改,但是p1-p4指针变量是可以修改的。

*p1 = 100; //error 取值时是只读的,无法修改a的值
p1 = NULL; //不报错,指针的指向是可以更改的。

2 const 修饰指针变量

int* const p1 = &a;
int *const p2 = &a;

以上两种声明等价,当const在星号 * 和变量名之间,可以理解为const修饰的是指针变量p1,p2,即指针p1和p2的值(指向)不能修改,但是p1,p2的取值操作时候的值可以修改。 声明时必须初始化指针变量,一旦完成初始化就不能再指向其他地址。

*p1 = 100; //合法,此时a的值变为100
p1 = NULL; //error,指针变量的指向不能修改

3 两个const修饰

const int* const p1 = &a;

此时p1的指向不能修改,且p1的取值操作的值也不能修改

*p1 = 100; //error
p1 = NULL; //error
a = 100; //并不影响pi指向的a的值的修改

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/5986.html

(0)
晴川运维晴川运维
上一篇 2025年6月8日
下一篇 2025年6月8日

相关推荐

  • Dockerfile中COPY 和 ADD命令

    Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本篇文章为大家讲解两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。 Build 上下文的概念…

    Linux系统 2025年7月2日
  • Linux下使用Python读取文件

    不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素。利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后…

    Linux系统 2025年10月5日
  • 浅谈Base64编码原理

    Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于 2的6次方是64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64…

    Linux系统 2025年6月17日
  • LVM恢复已删除的逻辑卷具体方法

    LVM中如何恢复已删除的逻辑卷?在执行任何逻辑卷管理相关任务时,如果意外的删除了逻辑卷,则可以使用它的数据还原功能来恢复逻辑卷,下面为大家分享一下LVM中恢复已删除的逻辑卷具体方法…

    Linux系统 2025年10月21日
  • 详chcon命令使用方法

    chcon命令是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。 语法 chcon [选项]… 环…

    Linux系统 2025年10月19日
  • 让WIFI更安全的几点建议

    伴随着“互联网+”、“数字经济”“工业互联网“、”智能制造“”互联网转型“等关键词的提出,互联网和大数据在各行各业中得到广泛应用,互联网的快递发展对经济、金融、消费习惯、思维习惯等…

    Linux系统 2025年10月23日
  • 使用python实现斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci1)以兔子繁殖为例子而引入,故又称为“兔…

    Linux系统 2025年7月3日
  • 通过5个方面证明工厂中实施工业物联网技术的必要性

    物联网(IoT)无处不在。事实上,在过去的几年里,很难找到任何与智能制造、供应链转型、物流、工厂自动化或数据收集相关的文章不提及物联网(IOT)或工业物联网(IIOT)。 对于那些…

    Linux系统 2025年10月20日
  • VMware虚拟机安装Linux系统(详解版)

    许多新手连 windows 的安装都不太熟悉,更别提 linux 的安装了;即使安装成功了,也有可能破坏现有的 Windows 系统,比如导致硬盘数据丢失、Windows 无法开机…

    Linux系统 2025年9月22日
  • 详解Ruby的五种变量

    Ruby支持的有五种类型的变量,分别是全局变量、实例变量、类变量、局部变量、常量、伪变量,下面为大家详细的讲解一下Ruby的五种变量。 Ruby 全局变量 全局变量以 $ 开头。未…

    Linux系统 2025年6月11日

发表回复

登录后才能评论