首页 > 其他分享 >如何区分指针常量和常量指针

如何区分指针常量和常量指针

时间:2022-10-01 18:24:43浏览次数:44  
标签:const 常量 指向 int 区分 修饰 指针

一、概念

常量指针:常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改
在C/C++中,常量指针是像这样声明的:
1)const int *p;
2)int const *p;
指针常量:指针常量的本质是一个常量,并且使用指针来修饰它,那么说明这个常量的值应该是一个指针
在C/C++中,指针常量这样声明:
1)int a;
2)int *const p = &a; //const放在指针声明操作符的右侧

二、实例分析

区分方法:从变量名开始看起,从后往前看,以第一个看到的字符为判断依据。

int a = 10;
int b = 10;

//常量指针 const修饰的是指针,指针指向可以改,指针指向的值不可以更改
//从变量名p1 开始看起,从后往前看,以第一个看到的字符是 *,*就是指针,我们就知道是在描述“指针”,很显然,“常量的指针”才是描述指针的。所以这两句代码是在说常量指针。
const int* p1 = &a;
p1 = &b; //正确
//*p1 = 100;  报错

//指针常量 const修饰的是常量,指针指向不可以改,指针指向的值可以更改
//从变量名p2开始看起,从后往前看,以第一个看到的字符是 const,const就是常量,我们就知道是在描述“常量”,很显然,“指针的常量”才是描述常量的。
int* const p2 = &a;
//p2 = &b; //错误
*p2 = 100; //正确

//常量指针修饰的指针常量 const既修饰指针又修饰常量
//那有人问了,那么如果我既不想让指针被再次赋值,也不想让指针指向的对象被再次赋值,该怎么做呢?可以参考下方代码所示:
const int* const p3 = &a;
//p3 = &b; //错误
//*p3 = 100; //错误

标签:const,常量,指向,int,区分,修饰,指针
From: https://www.cnblogs.com/kylintao/p/16747533.html

相关文章

  • 25.防止空指针调用成员函数
    程序1:#pragmawarning(disable:4996)#include<iostream>usingnamespacestd;classMaker{public:Maker(){a=20;}voidprint......
  • 字符串子序列,双指针
    字符串子序列[https://www.online1987.com/字符串子序列/]#define_CRT_SECURE_NO_WARNINGS1//可省略#include<iostream>usingnamespacestd;#include<string>#incl......
  • FILE *p 是什么类型的指针呢
    1)定义FILE是一个在stdio.h中预先定义的一个文件类型。要先声名一个文件指针变量然后用文件函数操作。在书上看到过一个FILE类型typedefstruct{shortlevel;/*缓冲区“......
  • Leetcode 680 -- 双指针&贪心
    题目描述验证回文串思路代码classSolution{public:boolpalindrome(string&s,inti,intj){for(;i<j&&s[i]==s[j];++i,--j);......
  • 代码随想录训练营|Day 10|459,总结,双指针
    459.RepeatedSubstringPatternGivenastring s,checkifitcanbeconstructedbytakingasubstringofitandappendingmultiplecopiesofthesubstringto......
  • 2022.9.28学习了基础指针
    今天是周四,学校没有课,早上起来学习了一会C语言,今天学了一下基础的指针(印象比较深),对这个东西也有了一个初步的认识,也试着敲了两个代码。毕竟是刚刚开始的的时候嘛,难免有一......
  • 变量,常量
    变量常量变量Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。typevarName[=value][{,varNam......
  • 智能指针
    RAII(ResourceAcquisitionIsInitialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制......
  • C++指针入门
    C++指针入门目录C++指针入门C++中变量位置C++中指针的声明利用指针实现swap()C++中变量位置#include<iostream>usingnamespacestd;intmain(){intvar1;......
  • C#交换方法指针
    被引用的dll是testDllFr.dll,其代码为:namespacetestDLLFr{publicclassTestA{publicstaticvoidTestAM(){Console.Write......