C++常量指针声明 const关键字位置区别

const在左表示指向常量,在右表示指针常量,两边都有则两者皆不可变,关键看const相对于*的位置。

c++常量指针声明 const关键字位置区别

在C++中,const关键字的位置决定了指针和它所指向的数据哪个是常量,理解这一点对正确使用常量指针非常重要。虽然写法不同,但它们的含义有明显区别

const在星号左边:指向常量的指针

当const出现在*的左侧时,表示指针指向的数据是常量,不能通过该指针修改数据,但指针本身可以指向其他地址。

例如:

const int* ptr;

int const* ptr;

这两种写法等价,都表示ptr是一个指向int类型常量的指针。你可以修改ptr让它指向别的变量,但不能通过*ptr修改它指向的值。

示例:

立即学习“C++免费学习笔记(深入)”;

int a = 10;
int b = 20;
const int* ptr = &a;
*ptr = 30; // 错误:不能修改指向的数据
ptr = &b; // 正确:可以改变指针指向

const在星号右边:常量指针

当const出现在*的右侧时,表示指针本身是常量,即指针的地址不能改变,但可以通过指针修改它指向的数据。

写法为:

int* const ptr;

这表示ptr是一个常量指针,必须在声明时初始化,并且之后不能再指向其他地址。

示例:

立即学习“C++免费学习笔记(深入)”;

int a = 10;
int b = 20;
int* const ptr = &a;
*ptr = 30; // 正确:可以修改a的值
ptr = &b; // 错误:不能改变指针指向

const在星号两侧:指向常量的常量指针

如果const同时出现在*的两边,表示指针本身不能变,指向的数据也不能通过该指针修改。

写法为:

const int* const ptr;

int const* const ptr;

这是最严格的限制。指针初始化后既不能改变指向,也不能修改所指向的值。

示例:

立即学习“C++免费学习笔记(深入)”;

int a = 10;
int b = 20;
const int* const ptr = &a;
*ptr = 30; // 错误:不能修改数据
ptr = &b; // 错误:不能修改指针

判断技巧:从右往左读声明。比如

const int* const ptr

,可以理解为“ptr是一个const指针,指向一个int的const值”。

基本上就这些,关键在于const相对于*的位置。记清楚这个规则,就能准确声明需要的指针类型。

以上就是C++常量指针声明 const关键字位置区别的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1473899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
C++中解引用一个未初始化的指针会导致什么后果
上一篇 2025年12月18日 20:58:00
C++结构体作为函数参数 值传递与引用传递对比
下一篇 2025年12月18日 20:58:11

相关推荐

  • VSCode如何实现AI代码反混淆 VSCode智能分析混淆代码的技巧

    vscode没有一键ai反混淆功能,但可通过智能扩展、调试器、ast查看器、代码格式化工具及外部ai工具集成来辅助分析和逐步还原混淆代码;2. 利用eslint、prettier等扩展提升代码可读性,通过“重命名符号”“转到定义”“查找引用”等功能追踪变量和函数流向,结合多光标编辑和代码片段进行手动…

    2026年9月24日
    100
  • 小红书推广选择阅读量还是粉丝量?小红书怎么推广引流

    小红书作为融合内容、社交与电商的综合性平台,近年来吸引了大量创作者和品牌入驻。在进行推广时,很多人常常纠结:是更重视阅读量,还是更关注粉丝量?本文将从两者的定义出发,分析各自的优劣势,并提供实用建议,帮助你制定适合自己的推广策略。 一、阅读量与粉丝量的本质区别 1. 阅读量 阅读量代表的是某篇笔记或…

    2026年9月24日
    000
  • win10软件不兼容怎么办_win10软件兼容性处理方法

    首先使用兼容性疑难解答工具检测并修复问题,若无效则手动设置兼容模式为Windows 7或8,同时安装必要的Visual C++和.NET运行库,更新显卡等驱动程序,并尝试以管理员身份运行程序。 如果您尝试在Windows 10系统上运行某个软件,但出现“此应用无法在你的电脑上运行”或程序闪退等错误提…

    2026年9月24日
    000
  • VSCode如何配置.NET开发环境 VSCode搭建.NET项目的完整流程

    首先安装.net sdk并验证版本;2. 安装vscode及microsoft官方c#扩展,确保智能感知和调试功能正常;3. 通过dotnet new命令创建项目,并使用code .在vscode中打开项目;4. 添加构建和调试资产以生成tasks.json和launch.json文件;5. 安装n…

    2026年9月24日
    000
  • 苹果15换屏幕费用是多少

    官方维修费用:品质与保障的代价 苹果官方售后以其高标准的服务和原装零部件著称。针对iPhone 15的屏幕更换,官方定价普遍处于1000元至2000元区间,具体费用会因机型差异(如标准版与Pro版)以及所在城市而有所不同。这一价格不仅体现了苹果品牌的技术投入与服务保障,也确保了维修后的设备性能与出厂…

    2026年9月24日
    200
  • Linux用户adduser与useradd命令区别

    adduser是交互式脚本,默认创建家目录并设密码,适用于Debian/Ubuntu;2. useradd是底层命令,需手动加参数创建家目录和Shell,通用性强,适合脚本使用。 在Linux系统中,adduser 和 useradd 都可以用来创建新用户,但它们在实现方式、使用习惯和功能上存在明显…

    2026年9月24日
    000
  • 如何在PHP的require语句中传递参数并有效管理变量作用域

    本文探讨了在php中使用`require`或`include`语句时如何向被引入文件传递参数。文章详细阐述了通过直接变量作用域共享、利用`$_get`超全局变量(不推荐)以及将引入文件内容封装为函数或类(推荐最佳实践)这三种方法,并提供了相应的代码示例,旨在帮助开发者理解和选择最适合其场景的参数传递…

    2026年9月24日
    000
  • VSCode如何设置智能代码重构建议 VSCode自动化重构工具的配置优化

    vscode的智能代码重构建议不出现时,首先检查文件类型是否受支持、对应语言扩展是否安装启用、项目根目录是否有jsconfig.json或tsconfig.json等配置文件;2. 确保editor.lightbulb.enabled为true以显示灯泡提示;3. 通过设置editor.codeac…

    2026年9月24日
    700
  • PCIe 4.0和PCIe 5.0的固态硬盘,实际使用差别大吗?

    PCIe 5.0 SSD相比4.0在游戏加载中提升有限,仅快1-2秒且感知不强;但在视频剪辑、AI训练等生产力场景下,顺序读写速度提升近一倍,渲染和文件传输效率显著提高。 PCIe 4.0和5.0固态硬盘在实际使用中的差别,主要看你怎么用。对大多数普通用户来说,差距没想象中大;但如果你干的是专业活儿…

    2026年9月24日
    200
  • Laravel Blade中条件隐藏元素的优雅实践

    本文探讨了在Laravel Blade模板中如何高效地实现HTML元素的条件隐藏。针对传统@if-@else语句导致代码冗余的问题,教程提出使用Blade的内联三元运算符在style属性中动态控制display: none,从而避免重复代码,提升模板的可读性和维护性。此外,还将介绍如何利用CSS类和…

    2026年9月24日
    100
  • 如何在mysql中使用数值函数计算

    答案:MySQL数值函数用于执行数学运算,如ABS、ROUND、FLOOR、CEIL、MOD、POWER、SQRT等,可对数据直接计算。例如用ROUND四舍五入价格,TRUNCATE截断小数,FLOOR取整,MOD求余判断奇偶,SQRT开方,还可结合AVG、MAX等聚合函数使用,提升查询效率并减少应…

    2026年9月23日
    100
  • 一加R系列手机摄像头如何调整以拍出HDR视频?HDR视频的设置指南

    一加R系列手机摄像头如何调整以拍出HDR视频?HDR视频的设置指南一加R系列手机摄像头如何调整以拍出HDR视频?HDR视频的设置指南一加R系列手机摄像头如何调整以拍出HDR视频?HDR视频的设置指南一加R系列手机摄像头如何调整以拍出HDR视频?HDR视频的设置指南

    一加R系列拍摄HDR视频需开启相机中的HDR模式或选择4K等高分辨率视频模式,最佳光线为高对比度场景如日出日落,避免极暗或过亮环境,拍摄时启用防抖、使用三脚架以提升稳定性,并注意HDR视频具有更广动态范围和更高色深,但文件更大、对设备性能要求高,播放需支持HDR的设备以获得理想效果。 一加R系列手机…

    2026年9月23日 用户投稿
    300
  • VSCode搭建C++编程环境 手把手教你配置VSCode运行C++

    首先确保已正确配置mingw-w64并将其bin目录添加到系统环境变量path中,1. 检查c_cpp_properties.json中的”include path”是否包含头文件路径;2. 确认tasks.json中使用-i选项指定头文件路径;3. 验证编译器能否通过命令行…

    2026年9月23日
    800
  • 从单片机到ARM Linux驱动——Linux驱动入门篇

    大家好,又见面了,我是你们的朋友全栈君。 嵌入式Linux操作系统具有:开放源码、所需容量小(最小的安装大约需要2MB)、不需著作权费用、成熟与稳定(经历这些年的发展与使用)、良好的支持等特点。因此被广泛应用于移动电话、个人数码等产品中。嵌入式Linux开发主要包括:底层驱动、操作系统内核、应用开发…

    2026年9月23日
    100
  • 使用正则表达式实现字符串大小写不敏感替换

    本文将介绍如何利用正则表达式,高效、简洁地实现字符串中特定单词的大小写不敏感替换,从而将所有形式的单词统一转换为指定大小写。通过运用正则表达式的“不区分大小写”模式,可以避免为每种大小写变体编写单独的替换条件,极大提升代码的简洁性和可维护性。 在编程实践中,我们经常会遇到需要将字符串中某个单词的所有…

    2026年9月23日
    600
  • VSCode如何配置RISC-V开发环境 VSCode嵌入式开发的特殊设置

    解决方案的核心是选择合适的risc++-v gnu toolchain并将其bin目录添加到系统path,确保vscode能调用交叉编译器;2. 安装c/c++扩展和cortex-debug等调试扩展,通过c_cpp_properties.json配置头文件路径、宏定义和编译器路径,实现准确的智能感…

    2026年9月23日
    800
  • 如何在PaintShopPro中使用AI裁剪图片?快速掌握图像裁剪技巧

    如何在PaintShopPro中使用AI裁剪图片?快速掌握图像裁剪技巧如何在PaintShopPro中使用AI裁剪图片?快速掌握图像裁剪技巧如何在PaintShopPro中使用AI裁剪图片?快速掌握图像裁剪技巧如何在PaintShopPro中使用AI裁剪图片?快速掌握图像裁剪技巧

    PaintShop Pro虽无“AI裁剪”按钮,但可通过智能选择工具(如智能选择画笔、魔术棒)精准分离主体,结合内容感知填充实现背景移除或扩展,最终用裁剪工具优化构图,形成“先智能处理、后精准裁剪”的高效工作流。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek…

    2026年9月23日 用户投稿
    700
  • 快手直播什么标题吸引人?新人主播最牛的标题

    直播行业已经成为我国互联网产业中不可或缺的一部分。其中,快手直播凭借其鲜明的平台特色和庞大的用户群体,吸引了众多观众的目光。在竞争日益激烈的直播市场中,如何通过一个引人注目的标题吸引观众,成为每一位主播必须掌握的技巧。本文将为你揭示打造高人气直播的关键技巧,助你轻松吸引大量观众! 一、标题的关键作用…

    2026年9月23日
    100
  • MarkLogic搜索结果中total属性的计算机制解析

    MarkLogic搜索响应中的total属性表示匹配查询条件的文档总数估算值。这个值是通过search:search执行“非过滤搜索”(unfiltered search)并结合xdmp:estimate()函数计算得出的,主要依赖于MarkLogic的内部索引进行快速计数,而非逐一检查文档内容,从…

    2026年9月23日
    1300
  • mysql怎么执行连接查询 mysql输入多表关联代码教程

    mysql怎么执行连接查询 mysql输入多表关联代码教程mysql怎么执行连接查询 mysql输入多表关联代码教程mysql怎么执行连接查询 mysql输入多表关联代码教程mysql怎么执行连接查询 mysql输入多表关联代码教程

    mysql多表关联查询的核心是join语句,常见的类型包括inner join、left join、right join和cross join。1. inner join返回两个表中匹配的行,适用于查询有明确关联的数据;2. left join返回左表所有行及右表匹配的行,未匹配列显示为null,适…

    2026年9月23日 用户投稿
    200

发表回复

登录后才能评论
关注微信