为什么字符指针变量指向的字符串常量中的内容是不可以被取代的

是谭浩强的书有这么句话,但是我用tc操作后是可以给字符串常量赋值的为什么?????... 是谭浩强的书有这么句话,但是我用tc操作后是可以给字符串常量赋值的为什么????? 展开
 我来答
我寄愁心予冥月dbb42
2015-02-10
知道答主
回答量:37
采纳率:0%
帮助的人:20.7万
展开全部
你结果里面不是被取代了吗,c++索引是从0开始的,你更改第二个字符,不是正好是把house,中的u换成r吗
追问
但我的问题是 书上说字符串常量不可以被取代
追答
你要知道,程序实际运行时,无论是程序代码,数据,还是堆和栈都是处于内存中(实际是位于windows系统分配给进程的4G空间中,这4G空间是虚拟的,具体请查阅相关书籍),都是可以随时修改的,所谓的常量不能修改,只不过是编译器的语法规则限制而已,我建议你学习c++前先学汇编,逼近他们是一步一步发展过来的,

比如你在程序中赋值字符串 "house" 这种,在编译时会编译到你程序文件的数据区,当程序运行时,整个程序都会载入到内存中,然后再运行,当你的指针指向这一地址时,当然可以修改,另外,你上面的代码中,char* b="house" 是把一个指正指向了数据"house" 并不是声明指向常量的指针(具体怎么申明我忘记了,你自己查下书,实际编程时用的极少),所以通过了编译器的语法检查。如果你申明的是指向常量的指针,你编译时就会报错。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式