首页 > 编程语言 >【C++学习笔记】关于const int* 、 int const * 、 int* const

【C++学习笔记】关于const int* 、 int const * 、 int* const

时间:2023-04-04 18:00:14浏览次数:40  
标签:const 变量 int C++ 地址 20 指针

const int*、int const*、 int* const的关键点在于const 与* 的位置,而const 与类型 int的位置无关,可以随意调换,属于个人代码风格,不过建议写成 const int *,方便 直观。
const int*与 int * const 的区别在于 const 修饰的是int* 还是 变量,其中 const int* a 修饰的是int* ,表示这个指针指向的内存区域是常量,不可以修改值,与 const int a 相同,都是不可以改变内存内的值,int* const a 修饰的是变量a,表示变量a的存储的值(指向内存的地址)不可以改变,但是可以改变指向地址的值。
例如:

int m=5,n=10;//定义了两个变量 m  n 
int* a=&m;//a 是一个指针变量,指向了m的地址,即m存的是5,a存的是m的地址,常规操作中我们可以修改m的值,也可以修改a的值
//如下L:
m=15;//直接修改m的值为15,执行后,m是15,*a也是15;
*a=20;//通过指针a修改m的值,执行后,m是20,*a也是20;
a=&n;//直接修改a的值为n的地址,此时*a是10;

const int* b=&m;//b 是一个指针变量,指向m的地址。


*a=20;//这段代码会报错,因为修饰的是指针,表示指针指向的地址的值不可以改变,与 const int c=5;相同点是都是不能修改c的值,不同点是c的值一直不能改,但*a的值可以通过m=20来改变,执行以后,*a也变成了20。 *a不能改,但m能改


a=&n;//虽然const 约束了指针,但是没有约束指针变量,所以可以修改指针变量的值。即:改变指针变量指向的地址。
int* const b=&m;//b是一个常量地址,指向了m的地址


*b=&n;//这行代码会报错,因为b是一个常量,它的值就是m的地址,不能改变变量b的值。


*b=30;//可以通过*b修改m的值。此时m也是30;

标签:const,变量,int,C++,地址,20,指针
From: https://www.cnblogs.com/kafeibuhuizui/p/17287264.html

相关文章

  • c++vector怎么用
    ANSWERC++中的vector是一个能够存放任意类型的动态数组,能够增加和压缩数据,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。以下是使用vector的详细步骤和注意事项:头文件在使用vector时,需要包含vector头文件include初始化如果vector的元素类型是int,默认初始......
  • 【Python】ini解析ERROR:没有实例属性‘__getintem__’
    abaquspython搭配ini时,出现AttributeError:ConfigParserinstancehasnoattribute'getitem'20230404edit情况错误代码:fromConfigParserimportConfigParserconf=ConfigParser()conf.read(IniFilePath)layupFile=conf['DampCal']['lay......
  • Java:如何在PowerPoint幻灯片中创建散点图
    散点图是通过两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点,值由点在图表中的位置表示,类别由图表中的不同标记表示,通常用于比较跨类别的聚合数据。本文将为您介如何通过Java代码在PowerPoint幻灯片中创建......
  • c++ 数字和string 类型的相互转换
    C++数字和string类型的相互转换数字转为string1.std::to_string()函数//Definedinheader<string>std::stringto_string(intvalue);//(sinceC++11)std::stringto_string(longvalue);//(sinceC++11)std::stringto_str......
  • C++奥赛一本通贪心题解
    C++奥赛一本通刷题记录(贪心)2017.11.15Bygwj1139177410书不见了,占坑待填。AnEasyProblempoj2453//贪心,将最右边第一个01改成10并将其右边的1都往右移到最低位#include<iostream>usingnamespacestd;intmain(){unsignedintn,x;while(cin>>n&&n){......
  • C++,OpenCV图形基础(2)
    图像基础颜色通道RGB图像有4个默认通道:红色、绿色和蓝色各有一个通道,以及一个用于编辑图像复合通道(主通道)彩色深度8位色,每个像素所能显示的彩色数为2的8次方,即256种颜色。16位增强色,16位彩色,每个像素所能显示的彩色数为2的16次方,即65536种颜色。24位真彩色,每个像素所能显示的彩色......
  • Java使用IntelliJ IDEA配置Maven并管理一个webapp项目
    1、下载并安装Mavenapache官网地址:http://maven.apache.org/download.cgips:maven的使用是基于JDK的,所以电脑必须有JDK解压到文件夹,并配置环境变量。1、MAVEN_HOME,地址为maven的地址2、path,地址为%MAVEN_HOME%\binwin+r输入cmd进终端,输入mvn-v测试maven是否安装成功修改maven......
  • Java使用IntelliJ IDEA创建JavaWeb应用程序并配置Tomcat
    1、创建JavaWeb程序创建一个JavaEE项目,选择Web应用程序。创建好后结果如下2、添加Tomcat服务器首先在官网下载Tomcat对应的操作系统版本。https://tomcat.apache.org/右上角添加Tomcat服务器在服务器里选择本地的Tomcat地址,其他的默认。在部署里点击加号,选择Artifact工件,增加web......
  • C++统计写过的代码行数
    一、获得数据1、备份到XML2、改为txt2、进行统计#include<iostream>#include<string>usingnamespacestd;intmain(){ freopen("just.txt","r",stdin); strings; getline(cin,s); intflag=0;longlongcount=0; while(s!="gwj49491649......
  • Chisel3 使用 DPI-C,发现在 Chisel 环境下 printf 没问题,但是 set_pc 死活传不到 cpp
    大概率是因为你使用了SignExt之类的封装这类封装只会把”值“传给DPI-C,而不会把线连给DPIC,即,传过去的是调用set_pc时的值,而不是引用这样会造成CPP获取不了相应线路的指针 如下图     这些也是错的......