C语言里为什么字符指针变量指向的字符串常量中的内容是不可取代的?
6个回答
展开全部
指向字符串常量的话,这段常量字符串是存储在静态存储区的,内容不能修改。
当然你可以让指针指到别的地方
当然你可以让指针指到别的地方
追问
明白了。指向别的地方就可以进行内容变换了吧(指向的内容变了),地址发生改变,可以举个例子么?
追答
char c = 'b';
char *p = "Hello!"; // 字符指针指向字符串常量
// *p = 'a'; // 错误
p = &c; // 指到别的地方
*p = 'a'; // ok
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
const声明的是常量所在的段是只读的,程序不是所有地方都能改的,是有权限的,只读的存储区是不能写操作的,你只要写,就系统一定弹出异常信息,告诉你是只读的,操作无效,如果你想改就别声明称常量,当然你也有改的办法,去EXE文件里改吧,只要你能找到地方。。。。
更多追问追答
追问
O(∩_∩)O谢谢
追答
你学学硬件就知道了,CPU有个内存管理器,会给你存映射分区设置权限,不同的操作者权限都是不同,只要设置成只读,你那些写操作代码都是不执行的,直接进入系统的异常处理程序。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
系统内存会划分如下区域:常量数据区、栈区、自由存储区、堆区 、全局/静态区,其中常量存放在常量数据区,这个区域是只读的,用指针也无法改变这块区域的内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
常量就是常量,不是变量,不能改变
更多追问追答
追问
要是对地址进行操作也不可以么?
追答
常量就是不可改变的量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询