char *p=“world“ 這個里面的world為什么不能改变呢

C语言中,常量字符串存放在受保护的静态存储区,防止被非法修改。同一字符串常量可能由多个指针共享,修改会导致不可预期后果。'const char *p = "abc"'; 表示禁止修改指针内容,而'const char * const p = "abc"'; 则同时禁止修改指针及指针内容。
摘要由CSDN通过智能技术生成

为了保护常量,特将常量都放在受保护的静态存储区内。凡是试图修改这个区域内的值,都将被视为非法,并报错。

如下面2行代码

char *p1 = "world";
char *p2 = "world"; 
编译器为了节省空间,常量区中只有一份"world",所以p1、p2指向同一份的字符串
如果允许改变,这会造成无意中改变其他指针指向的字符串,操作系统中的copy-on-write,机制就是为了解决这个问题,可惜C语言中没有改机制,Delphi中也有

 

等同于 const char *p = "abc",这里有2层意思

1、这里的const是修改char *类型,即修饰字符串指针p指向的内容,也就是禁止更改指针指向的内容,但指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值