C语言之Const关键字与指针

目录

  • 1 前言
  • 2 变量与指针的储存方式
  • 3 const int *var;int *const var;const int *const var;理解与区分
  • 4 总结

1 前言

实际开发过程中经常遇到const关键字作用于指针的情况,例如:const int *var;int *const var;const int *const var;总是难以区分指针的哪个部分为Const,本文在于记录解析const与指针的纠葛。

2 变量与指针的储存方式

定义一个int类型变量:int Var_1 = 1u;
经过编译后最终将会在储存器中开辟一段大小为32 bit的内存用于存放标识符和值:
在这里插入图片描述
定义一个int类型指针:int *p = &var_1;
在这里插入图片描述
基于上述理解:
a则是通过标识符取值1
&a则为取a的地址为0xA000B000
*p则等同于取地址0xA000B000中的值即为1
&p则取到的是0xC000D000
在这里插入图片描述

3 const int *var;int *const var;const int *const var;理解与区分

  • const int *p:p为const int 类型,当使用p= N;是禁止的;
  • int *const p:const p为 int *类型,当使用p = &N;是禁止的;
  • const int *const var:const p 为 const int 类型,使用p= N;p = &N;操作都是禁止的的;

值得注意的是Const关键字修饰指针时并不会对指针所指向的目标造成限定,也就是说当*p = N;禁止时,N = 2;这样的操作仍然是被允许的,不属于修改了指针的内容,因此这样的语法常被应用于工程以防止指针的异常修改。

4 总结

以上为个人理解以及方法论,如有原理上的不当之处,望指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux开发板(正点原子阿尔法_IMX6U)QT5.12.9交叉编译到ARM开发板(已解决)

问题记录:Qt下ctrlR直接构建项目,然后在build-01_led-Desktop_Qt_5_12_9_GCC_64bit-Debugz中将构建的执行文件,scp到ARM开发板下,发现通过指令./01_led后出现以下报错。 问题原因:因为Qt构建默认使用的是64bit的gcc&am…

群辉NAS同步Android手机日历日程

目录 一、安装套件 二、手机导出日历日程 三、NAS套件导入日历 四、获得DAVx5登陆链接 五、手机配置 六、验证 上一篇文章我们解决了Android手机与群辉NAS的通讯录的同步,这期我们说说如何同步Android手机的日历中的日程到群辉NAS。 看过上篇文章的伙伴知道,Android需要…

深入了解Rokid UXR2.0 SDK内置的Unity AR Glass开发组件

本文将了解到Rokid AR开发组件 一、RKCameraRig组件1.脚本属性说明2.如何使用 二、PointableUI组件1.脚本属性说明2.如何使用 三、PointableUICurve组件1.脚本属性说明2.如何使用 四、RKInput组件1.脚本属性说明2.如何使用 五、RKHand组件1.脚本属性说明2.如何使用3.如何禁用手…

东旭蓝天被控股股东占用78亿:近七年业绩奇差,或面临退市

《港湾商业观察》施子夫 张楠 在7月5日一口气发了超过30份公告后,终于让投资者对于东旭蓝天2023年和今年一季度经营业绩有了更清晰的观察。 与此同时,东旭蓝天(下称)也收到了深交所的关注函。种种不利因素之下,上市…

Angular路由 属性的学习

canActivate属性 在Angular中,canActivate 是路由守卫(Route Guards)的一种,用于控制用户对特定路由的访问权限。路由守卫是Angular路由系统中的一个功能,它们可以在路由激活之前执行自定义逻辑,以决定是否…

AMEYA360:国民技术推出多款高能专用MCU产品

2024年7月8日,国民技术推出多款高能专用MCU产品。N32H482(通用控制)、N32H487(高性能互联)、N32GH473(电机控制)、N32H474(数字电源控制)四大系列高性能MCU新品,以及基于Arm Cortex M0内核实现的N32G052系列高性价比通用MCU新品。 全新一代高性能MCU新品…

android13 rom frameworks 蓝牙自动接收文件

总纲 android13 rom 开发总纲说明 目录 1.前言 2.源码查找 3.我们先实现第一种改法 4.实现第二种改法 5.第三种改法代码参考 6.编译测试 1.前言 我们从导航栏这里,点开这个蓝牙的接收框,弹出来的对话框,使用android studio 的layout inspector可以发现这个是 Bluetoo…

Linux之免费证书工具certbot安装和使用

一、cerbot简介 Certbot是一个免费的开源软件工具,用于在手动管理的网站上自动使用Let’s Encrypt证书以启用HTTPS。要想让自己的网站启用https协议,需要一个由CA(数字证书认证机构)颁发的,能够让各个浏览器都能承认的…

【ROS 快速解决】launch 文件编写

通过launch文件以及roslaunch命令可以一次性启动多个节点&#xff0c;并且可以设置丰富的参数 通常存放路径&#xff1a;工作空间目录 / launch / xxx.launchlaunch 文件本质是一个 xml 类型的文件&#xff0c;基本格式如下<launch> <node .../> ## 最重要的标签 …

强化OT安全英国发布工控网络事件响应实践指南

该安全机构指出&#xff0c;OT/ICS网络的运行方式与传统的IT网络存在诸多关键差异。 尽管保护数据的机密性是IT网络的主要目标&#xff0c;但OT安全更侧重于维护设备的可用性和完整性&#xff0c;而非数据访问。RITICS解释道&#xff1a;“网络事件响应计划应兼顾IT和ICS/OT系…

Spring Web MVC入门(1)(建立连接)

一.什么是Spring Web MVC? Spring Web MVC是基于ServletAPI构建的原始Web框架,从一开始就包含在Spring框架中.它的正式名称"Spring Web MVC"来自其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC". 二.MVC的定义 MVC是Model View Controller的缩…

迅狐矩阵系统:一键式剪辑神器,引领矩阵运营新潮流!

在数字化浪潮汹涌的当下&#xff0c;视频内容已经成为人们获取信息、娱乐休闲的重要方式。然而&#xff0c;面对海量的视频素材和日益增长的用户需求&#xff0c;如何高效、高质量地剪辑和分发视频内容&#xff0c;成为了摆在众多内容创作者和运营团队面前的难题。幸运的是&…

MySQL 日志深度解析:从查询执行到性能优化

引言 MySQL 日志是数据库管理员和开发者的宝贵资源&#xff0c;它提供了查询执行的详细情况&#xff0c;帮助我们诊断问题和优化性能。本文将深入分析一个具体的 MySQL 日志条目&#xff0c;解释其含义&#xff0c;并提供针对性的优化建议。 日志信息概览 让我们先来快速了解…

【单片机毕业设计选题24053】-基于单片机的WiFi控制门禁系统设计

系统功能: 系统上电后OLED显示智能门禁系统 Door:xxxxxx 初始化ESP8266完成后显示 Door:Closed 短按按键SW4可打开电磁锁OLED显示Door:Open&#xff0c;约五秒后电磁锁自动关闭OLED 显示Door:Closed 根据“TCP调试助手使用说明”操作&#xff0c; 在调试助手界面发送Open后…

商城源码从哪里找

商城源码可以从多个渠道获取&#xff0c;具体包括开源平台、专门的商城系统提供商、代码分享网站等。不同的渠道可能适合不同的需求和技术水平。下面将详细分析各个渠道的特点及优缺点&#xff1a; 开源平台 Gitee&#xff1a;Gitee是一个知名的代码托管平台&#xff0c;提供…

【VUE基础】VUE3第五节—核心语法之ref标签、props

ref标签 作用&#xff1a;用于注册模板引用。 用在普通DOM标签上&#xff0c;获取的是DOM节点。 用在组件标签上&#xff0c;获取的是组件实例对象。 用在普通DOM标签上&#xff1a; <template><div class"person"><h1 ref"title1">…

RDNet实战:使用RDNet实现图像分类任务(一)

论文提出的模型主要基于对传统DenseNet架构的改进和复兴&#xff0c;通过一系列创新设计&#xff0c;旨在提升模型性能并优化其计算效率&#xff0c;提出了RDNet模型。该模型的主要特点和改进点&#xff1a; 1. 强调并优化连接操作&#xff08;Concatenation&#xff09; 论文…

CF328A IQ Test 题解

思路 依题意模拟即可。 注意要保证是整数。 代码 #include<bits/stdc.h> #include<cstring> #include<queue> #include<set> #include<stack> #include<vector> #include<map> #define ll long long #define lhs printf("\n…

kotlin flow collect collectLatest 区别

在 Kotlin 协程库中&#xff0c;collect 和 collectLatest 都是用于收集 Flow 中发射的数据的方法&#xff0c;但它们在处理数据和响应新数据的方式上有所不同。 collect collect 是一个挂起函数&#xff0c;用于收集 Flow 中发射的所有数据。它会按顺序处理每一个发射的数据…

UML图书管理系统用例图示例

新书速览|《UML 2.5基础、建模与设计实践》新书速览|《UML 2.5基础、建模与设计实践 【例4.4】图书管理系统用例图。 图书管理系统按其业务功能分成借阅者管理、图书管理、借书、还书和用户管理等几部分&#xff0c;这些职能对应于系统的不同组织部门。 1&#xff09;系统参…