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

为什么说C语言中常量不能改变?可以改变啊,比如我写代码的时候,本来写的7,现在改成5,这不就改了吗!

发布网友 发布时间:2022-04-23 13:34

我来回答

5个回答

热心网友 时间:2023-10-15 21:55

首先,概念我就不再多说了了,首先从他们定义上去区别,定义一个变量,我们只需要“int a;”这样就够了,如果你要定义一个常量“const int a;”这样很明显是错误的,必须要给它赋值,要“const int a=1;”对吧。

接着,之所以说常量不可变,接着 我们来看一段代码,判断一下哪句话会引起报错呢: typedef char * pStr; char string[4] = "abc"; const char *p1 = string; const pStr p2 = string; p1++; p2++; 答案与分析: 问题出在 p2++上。 1)、const 使用的基本形式: const char m; 限定 m 不可变。 2)、替换 1 式中的 m, const char *pm; 限定*pm 不可变,当然 pm 是可变的,因此问题中 p1++ 是对的。 3)、替换 1 式 char, const newType m; 限定 m 不可变,问题中的 charptr 就是一种新类型,因此 问题中 p2 不可变,p2++是错误的。

再比如 下面定义了一个指向字符串常量的指针: const * ptr2 = stringprt1; 其中,ptr2 是一个指向字符串常量的指针。ptr2 所指向的字符串不能更新的,而 ptr2 是可以更新的。 因此, *ptr2 = "x"; 是非法的,而: ptr2 = stringptr2; 是合法的。

热心网友 时间:2023-10-15 21:56

常量不可改变是指在第一次赋值之后,在程序运行当中不可改变,你应该是理解错了!追问从理论上说常量和变量都是“一段储存空间”,为什么常量运行中不可改变,而变量可以?

追答这是C++的实现问题。
个人觉得应该是将内存标记为只读了。

热心网友 时间:2023-10-15 21:56

int val = 5; //这是变量
val = 7; //你修改了变量的值

const int val = 5; //这是常量
val = 7; //报错,不能修改常量的值。

热心网友 时间:2023-10-15 21:57

书上说的能不能改是指运行过程中。你写程序的时候程序并没有在“运行”,写完以后编译了才运行,开始运行了就不能改了,运行完了你爱改那是另一回事……

热心网友 时间:2023-10-15 21:57

简单一句话:地址值与内容的关系不可改变,这里再解释一下:任何一个量在内存空间中的样子都类似于一个有俩个格子的纸箱子,一边存放地址值一边存放数值,在变量中这种关系可以被改变,常量则不可以。
认可我吧,因为剩下的回答都是狗屎

热心网友 时间:2023-10-15 21:55

首先,概念我就不再多说了了,首先从他们定义上去区别,定义一个变量,我们只需要“int a;”这样就够了,如果你要定义一个常量“const int a;”这样很明显是错误的,必须要给它赋值,要“const int a=1;”对吧。

接着,之所以说常量不可变,接着 我们来看一段代码,判断一下哪句话会引起报错呢: typedef char * pStr; char string[4] = "abc"; const char *p1 = string; const pStr p2 = string; p1++; p2++; 答案与分析: 问题出在 p2++上。 1)、const 使用的基本形式: const char m; 限定 m 不可变。 2)、替换 1 式中的 m, const char *pm; 限定*pm 不可变,当然 pm 是可变的,因此问题中 p1++ 是对的。 3)、替换 1 式 char, const newType m; 限定 m 不可变,问题中的 charptr 就是一种新类型,因此 问题中 p2 不可变,p2++是错误的。

再比如 下面定义了一个指向字符串常量的指针: const * ptr2 = stringprt1; 其中,ptr2 是一个指向字符串常量的指针。ptr2 所指向的字符串不能更新的,而 ptr2 是可以更新的。 因此, *ptr2 = "x"; 是非法的,而: ptr2 = stringptr2; 是合法的。

热心网友 时间:2023-10-15 21:56

常量不可改变是指在第一次赋值之后,在程序运行当中不可改变,你应该是理解错了!追问从理论上说常量和变量都是“一段储存空间”,为什么常量运行中不可改变,而变量可以?

追答这是C++的实现问题。
个人觉得应该是将内存标记为只读了。

热心网友 时间:2023-10-15 21:56

int val = 5; //这是变量
val = 7; //你修改了变量的值

const int val = 5; //这是常量
val = 7; //报错,不能修改常量的值。

热心网友 时间:2023-10-15 21:57

书上说的能不能改是指运行过程中。你写程序的时候程序并没有在“运行”,写完以后编译了才运行,开始运行了就不能改了,运行完了你爱改那是另一回事……

热心网友 时间:2023-10-15 21:57

简单一句话:地址值与内容的关系不可改变,这里再解释一下:任何一个量在内存空间中的样子都类似于一个有俩个格子的纸箱子,一边存放地址值一边存放数值,在变量中这种关系可以被改变,常量则不可以。
认可我吧,因为剩下的回答都是狗屎
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酒驾缓刑节保证书怎么写 合同法律咨询免费 这款充电宝可以带上飞机吗? 倪俊卿成就及荣誉 江苏种牛站有几家? 山东宏正牧业有限公司服务承诺 吃早餐后抽血会影响体检结果吗 电脑如何设置护眼模式(台式电脑如何设置护眼模式) 电脑显示器设置护眼电脑屏幕怎么设置比较护眼 广告机是否支持分屏显示功能? define定义的常量可以改变吗 (四)澧阳平原常量元素变化特征 (三)长江分流区常量元素变化特征 什么是,变量,常量? 常量的值能否改变? (一)东洞庭湖区常量元素变化特征 字符串常量是怎么改变的? 改变常量 python常量的值可以改变吗 假如一些宇宙中的常数变了,我们能感知到吗? 等式两边同时积分常量怎么变化 焊锡时要焊锡不熔化是为什么 什么化学物质可以使雪不融化 为什么冰不融化的毛巾慢慢干了? 世界上有永远不会融化的冰吗 什么冰可以长时间不融化 世界上有没有火烧不化的物质 盐为什么在开水里不融化怎么解决呢? 白糖放水里不融化是怎么回事 化肥撒在地里不融化是怎么回事 怎样监听常量变化android 常量和常变量有什么区别没 (四)不同地区第四纪红土剖面常量元素变化 重庆南岸区办理失业保险手续在哪里办理啊? 变量与常量的简单问题。在线等。 引力常量会改变吗?为什么会随时间改变?详细 重庆市黔江区失业金领取流程?在哪里办理什么?越详细越好 (三)不同母质的第四纪红土常量元素变化 重庆失业保险中心在哪 常量是指在程序执行期间其值能不断变化的量。 这句话是对的还是错的? 2016年重庆失业证在哪里办理有什么用,失业证优惠政策 万科A是哪里的股票? 万科A,000002是什么证券交易所上市的股票? 90年深万科A200股放到现在价值多少? ...体质?“吸渣”的女人有什么特点?“吸渣”的女人是坏女人还是好女人... 000002 万科A 万科增发 多出5股显示黑色的股票是什么意思啊 万科是国企还是私企? 如何查看《万科A》股票近一个月每天的具体走势? 万科A是沪指还是深指 不少女生称自己是吸渣体质,你觉得吸渣体质都有哪些特点?