当前位置: 首页 > article >正文

const使用,指针常量与常量指针

文章目录

  • 一、const 是什么?
  • 二、指针常量
  • 三、常量指针
  • 四、指向常量的指针常量
  • 二者分辨


强烈推荐同勉共进大佬的博客,关于指针常量和常量指针讲的真好!
理清C++常量指针和指针常量这团乱麻

一、const 是什么?

const 可以翻译成“常量”,即不可被改变的量。通常用于修饰变量让其内容在初始化后都不可以改变它,相当于 read-only(只读)。用它的目的是用语法的行为保护变量的值不被意外的修改。

全局变量加 const,其会被创建在常量区;而局部变量加 const 只能做语法级的初步检测,但是绕过变量名的访问就出现了矛盾。

const 在指针变量的修饰方面可以存在于两个位置的修饰,即指针常量和常量指针。

二、指针常量

更确切的来说应该是指向变量的指针常量

该指针指向一个常量,常量的值不可变,不可以通过该指针修改其值,但是该指针可以指向其他常量。(指针地址可以变,值不能变)

避免指针不能指向其它的变量,格式为:int* const p = &a

三、常量指针

更确切的来说应该是指向常量的指针变量

指针本身是常量。该指针只能指向某个常量,不可再指向其他常量。(指针地址不可变,值可变。注:指针常量在定义时要赋初值。)

所谓“指向常量”只是这个指针的“一厢情愿”,只是一种效果上的等价。事实上,const int *p=&a;a既可以是常量(const int a=10;)又可以是变量(int a=10;),但p一厢情愿地认为它所指的就是一个常量,所以它不允许通过自己来修改所指,这就造成一种效果上的等价——从p的角度看,它所指的“的确”是常量。所以,对“指向常量的指针”的最佳理解应为:我们不能通过该指针修改它所指向的东西(常量或者变量)。

避免指针不可修改其内容。格式为:int const* p = &a;(放在 int 前也可以(const int *p = &a;))

四、指向常量的指针常量

没啥说的,格式:const int* const p


二者分辨

区分:从右往左读。或者先找到*,然后看*的两边,右边是对指针p本身的限定,左边是对p所指向的东西的限定。

引用是一个指向不可变的、被编译器自动解引用的指针,即,引用是一个被编译器自动解引用的“本身是常量的指针”。


http://www.kler.cn/a/230972.html

相关文章:

  • Maven的安装以及配置(超级详细版)
  • Node.js-1
  • 力扣:78. 子集
  • (38)找出数组的最大公约数
  • 校准大麦服务器时间,实现本地时间和服务器时间同步,无缝衔接抢购
  • mac如何实现升级node版本、切换node版本
  • Vue代理模式和Nginx反向代理(Vue代理部署不生效)
  • Matlab图像处理——基于小波变换的数字图像水印嵌入和提取算法(GUI界面)
  • 代码随想录训练营第三十期|第二十九天|回溯算法part05|491.递增子序列* 46.全排列* 47.全排列 II
  • php 函数三
  • 【算法】【数据结构】算法与数据结构的关系
  • 【数据结构】二叉树的顺序结构及实现(堆)
  • PHP入门指南:进阶篇
  • 定制红酒:如何通过定制红酒提升企业形象
  • 封装图片预览组件
  • 10. Springboot集成Dubbo3(一)简单介绍
  • 学习Android的第五天
  • [C语言]C语言实战项目------单链表通讯录
  • iOS面试题
  • Linux的进程信号