问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别?

发布网友 发布时间:2022-06-17 05:23

我来回答

5个回答

热心网友 时间:2023-11-16 03:13

const int a; int const a; 这两个写法是等同的,表示a是一个int常量。
const int *a; 表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量。也可以写成int const* a;含义相同。
int * const a; 表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之后就不能再指向别的地方了。
int const * a const;这个写法没有,倒是可以写成int const * const a;表示a是一个指针常量,初始化的时候必须固定指向一个int常量或者int变量,之后就不能再指向别的地方了,它总是把它所指向的目标当作一个int常量。也可以写成const int* const a;含义相同。追问对于const int *a和int *const a,是不是可以理解为:const int *a中const修饰*a,但是&a可变,只要&a指向的目标是const类型就可以;而int *const a中const修饰&a,一旦指向则不能改写,但是可以修改*a的值?

追答把你的理解里的&a都改成a就对了。

热心网友 时间:2023-11-16 03:14

如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:
int b = 500;
const int* a = &b; [1]
int const *a = &b; [2]
int* const a = &b; [3]
const int* const a = &b; [4]
如果你能区分出上述四种情况,那么,恭喜你,你已经迈出了可喜的一步。不知道,也没关系,我们可以参考《Effective c++》Item21上的做法,如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常量。
另外const 的一些强大的功能在于它在函数声明中的应用。在一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法:
A& operator=(const A& a);
void fun0(const A* a );
void fun1( ) const; // fun1( ) 为类成员函数
const A fun2( );

热心网友 时间:2023-11-16 03:14

  1、如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
  2、因此,const int *a;和 int const *a;的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ; ,int *const a;为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的。
  3、const int* const a;为指针本身和指向的内容均为常量。

热心网友 时间:2023-11-16 03:15

const int *a; 表示指针a指向的整数为只读变量,不能改变,但可以改变指针a的值来改变a指向的内容。
int const *a;同上,一个意义。
int *const a;表示指针a为只读变量,不能改变,既不能改变a指向的地址,但可以改变a的内容。

const定义要从右至左看,const int *a,既const (int *a),const修饰的是指针a指向的内容,int *const a;const修饰的是a,即指针。

热心网友 时间:2023-11-16 03:16

const int *------a=&b;
是说指针的值是确定的,即这个指针所指的内存地址是确定的,这时所存的说可以修改。

const* int------ a=&b
是说指针所指的值是确定的,即指针所指向的内存空间的值是确定的,这时指针的值可以修改。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么鉴别匡威真假鉴别鉴别匡威真假的方法与技巧 洛阳小碗汤怎么做 酥肉丸子汤如何烹饪简单而又不失美味? 直通车产出比多少不亏?产出比低怎么调整? 淘宝直通车投产比多少才是盈利?怎么提升? 车打不着拧钥匙没反应 车打火的钥匙拧不动 微信关闭时后台还在图标上还有个小锁什么意思 坦克世界闪击战电脑需求配置玩坦克世界电脑配置要达到什么标准_百度... 坦克世界对电脑配置要求高不高玩坦克世界电脑需要什么配置要求 坦克世界对电脑的配置要求是多少坦克世界配置要求 INT的常量使用 int型常量到底是如何定义的? int型常量到底是如何定义的 璀璨星河看着挺喜欢,但是也要有人能配上它什么意思? 小巧玲珑可以形容仓鼠吗 昆山东鸿昊包装材料有限公司怎么样? 卧底3真正的将军是谁 传媒幕后校考文化本科分数线 入手单反第一步应该做什么? 为什么我会喜欢听钢琴曲? 试听上课 广场舞·同一首歌曲它的舞蹈是一样的吗 本段文字出自课文月光曲它是什么国谁创作的这段文字描述了什么 魔兽世界60级配装 想要生命值达到3000+ 法力值达到6000+(也就是说耐力要达到220+ 智_百度问一问 魔兽世界战士的配装 厦门市市政工程设施管理条例(2019修正) 城市道路管理条例(2019修订) 南京市长江桥梁隧道条例(2019) 不敢离婚的男明星,你知道有谁吗?都是什么原因? 12星座必须学会的恋爱方式,看看你属于哪个星座? 澎湃低音震撼听感 全面革新的惠威D300两分频有源Hi-Fi音响评测 花生扭扭酥的做法,花生扭扭酥怎么做好吃,花生 酥炸扭结应该怎样做? 哪些星座即使发现恋人有问题,也会自己骗自己? 金融三大监管部门与人民银行的关系,是否是从属或者说哪个级别高?在三大部门监管过程种有管理真空吗? 天津有哪些直升机公司?哪家最好 第二届中国天津国际直升机博览会的主办信息 仓鼠不可以吃什么坚果 目前网上流传领取口罩要打开是骗局吗? 一百句简短情诗 特别美的长的情诗 北京前海股骨头医院如何? 谁知道国内哪里治疗股骨头坏死医院最好?最好是有过经历的人告诉我下 北京有个三甲股骨头医院吗? 目前网上流传领取口罩要打开是骗局吗? 哪些星座喜欢自欺欺人? 爱情中最爱自欺欺人四大星座都是谁 怎样利用基因工程手段,使酵母细胞中表达的外源蛋白运送到细胞核内 射手座的人对待感情是自欺欺人吗?喜欢一个人会有哪些表现呢? 金额12281600大写怎么写