为什么字符指针变量指向的字符串常量中的内容是不可以被取代的
1个回答
展开全部
你结果里面不是被取代了吗,c++索引是从0开始的,你更改第二个字符,不是正好是把house,中的u换成r吗
追问
但我的问题是 书上说字符串常量不可以被取代
追答
你要知道,程序实际运行时,无论是程序代码,数据,还是堆和栈都是处于内存中(实际是位于windows系统分配给进程的4G空间中,这4G空间是虚拟的,具体请查阅相关书籍),都是可以随时修改的,所谓的常量不能修改,只不过是编译器的语法规则限制而已,我建议你学习c++前先学汇编,逼近他们是一步一步发展过来的,
比如你在程序中赋值字符串 "house" 这种,在编译时会编译到你程序文件的数据区,当程序运行时,整个程序都会载入到内存中,然后再运行,当你的指针指向这一地址时,当然可以修改,另外,你上面的代码中,char* b="house" 是把一个指正指向了数据"house" 并不是声明指向常量的指针(具体怎么申明我忘记了,你自己查下书,实际编程时用的极少),所以通过了编译器的语法检查。如果你申明的是指向常量的指针,你编译时就会报错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询