C语言中的指针常量和常量指针

news/2024/10/18 0:20:29/

指针常量和常量指针是C/C++编程语言中两个重要的概念,它们都与指针有关,但具有不同的含义和用途。

1. 指针常量(Pointer to Constant)

指针常量指的是一个指针的值(即它所指向的地址)在初始化之后不能再被改变,但是它所指向的内容是可以被修改的。其声明形式通常如下:

const int *p;

这里,p 是一个指向整数的指针,但它是一个常量指针。也就是说,你不能改变 p 所指向的地址,但你可以改变 p 所指向地址上的内容。例如:

const int x = 10;  
const int *p = &x;  

// 下面的代码是合法的,因为p指向的内容可以被修改  
// 但实际上由于x也是常量,所以这里会报错  

*p = 20;  

 下面的代码是非法的,因为p是一个指针常量,它的值(即它所指向的地址)不能被改变  

 p = &y; // 假设y是另一个整数变量

2. 常量指针(Constant Pointer)

常量指针指的是一个指针所指向的内容在初始化之后不能再被改变,但是指针本身的值(即它所指向的地址)是可以被修改的。其声明形式通常如下:

int *const p;

这里,p 是一个指向整数的常量指针。也就是说,你不能改变 p 所指向地址上的内容,但你可以改变 p 所指向的地址。例如:

int x = 10;  
int y = 20;  
int *const p = &x;  
// 下面的代码是非法的,因为p是一个常量指针,它所指向的内容不能被修改  
// *p = 30;  // 下面的代码是合法的,因为p的值(即它所指向的地址)可以被改变  // p = &y; // 将p指向y的地址

 指针常量是一个指向常量的指针,其值(地址)不能被改变,但其所指向的内容可以被改变(除非所指向的内容本身也是常量)。常量指针是一个指向变量的常量指针,其所指向的内容不能被改变,但其值(地址)可以被改变。理解这两个概念的关键在于区分“指针的值”和“指针所指向的值”。指针的值就是指针所存储的地址,而指针所指向的值则是该地址上的内容。在编程中,正确理解和使用这两个概念可以避免许多常见的错误。

 


http://www.ppmy.cn/news/1448476.html

相关文章

vue 组件组件通信方法

1、父组件props传值给子组件。 子组件中定义props字段,类型为Array(如需限制字段值类型,也可以定义为Object的形式)。如下例子,父组件挂载子组件helloWorld,在组件标签上给title赋值,子组件hel…

【项目纪实】某国有航空公司人力资源系统诊断咨询项目

公司的人力资源管理问题一直都比较严重,比如人员冗余、员工工作积极性差等问题,虽然经过多次的管理尝试,存在的问题仍然没有缓解。华恒智信人力资源咨询公司的老师特别专业,帮我们系统、全面的诊断了人力资源管理上存在的问题&…

LabVIEW智能变电站监控系统设计与实现

LabVIEW智能变电站监控系统设计与实现 随着电力系统和智能化技术的快速发展,建立一个高效、可靠的变电站监控系统显得尤为重要。通过分析变电站监控系统的需求,设计了一个基于LabVIEW软件的监控平台。该平台利用虚拟仪器技术、传感器技术和无线传输技术…

Django后台项目开发实战六

日志记录 第六阶段 日志处理教程 Django 日志处理 我这里实现一个简单的日志,在 setting.py 文件添加日志 LOGGING {# 版本version: 1,# 是否禁止默认配置的记录器disable_existing_loggers: False,formatters: {simple: {format: %(asctime)s %(name)-12s %(linen…

JavaScript 的基本术语大全

文章目录 1、概述2、基本术语2.1、有效负载 (Payload)2.2、ReadableStream2.3、模块系统2.4、DOM (Document Object Model)2.5、事件 (Events)2.6、活动委托 (Event Delegation)2.7、内容安全策略 (CSP)2.8、渐进增强和优雅降级2.9、JSON (JavaScript Object Notation)2.10、AJ…

Web后端开发中对三层架构解耦之控制反转与依赖注入

内聚与耦合 内聚 比如说我们刚刚书写的员工的实现类 在这里我们仅仅书写的是和员工相关的代码 而与员工无关的代码都没有放到这里 说明内聚程度较高 耦合 以后软件开发要高内聚 低耦合 提高程序灵活性 扩拓展性 分析代码 如何解耦 创建容器 提供一个容器 存储东西 存储E…

Ansible playbook之变量引用

1.Ansible facts facts是一个用于采集被管理机器设备信息的一个组件,我们可以使用setup模块查机器的所有facts信息,可以使用filter来查看指定信息。 [rootansible01 ~]# ansible 11.0.1.19 -m setup 11.0.1.19 | SUCCESS > {"ansible_facts&quo…

【Unity】修改模型透明度

在 Unity 中修改模型透明度主要有两种方法:通过材质和通过着色器。以下是两种方法的步骤和解释: 方法 1:通过材质 在 Unity 编辑器中,选择你想要修改透明度的模型。在 Inspector 窗口中,找到模型的 Renderer 组件&am…