字符串常量与const常量内存区(——选自陈皓的博客)

1. 一个常见的考点:

char* p = "test";

那么理利用指针p来改变字符串test的内容都是错误的非法的。文章地址https://www.yii666.com/article/754015.html文章来源地址:https://www.yii666.com/article/754015.html

例如:

p[0] = 's';网址:yii666.com

strcpy(p, "haoel");  这都是错误的操作。

原因就在于,char* p = "test"; 这个声明,声明了一个指针,而这个指针指向的是全局的const内存区

const内存区当然不会让你想改就改的。所以,如果你一定要写这块内存的话,那就是一个非常严重的内存错误

 

2. 全局const内存区

char* p1 = "anything";

char* p2 = "anything";

printf(“ p1=%x, p2=%x /n”, p1, p2);

可以发现这两个内存地址是相同的,因为p1和p2都是指向的全局的const内存区的同一段内存中。

3. 在C++中声明字符串指针时

因为字符串是以常量的形式存在,所以可以 const char *p = "test";这样当你试图修改

字符串的内容时,就会报错。文章来源地址https://www.yii666.com/article/754015.html

4.  隐晦的字符串的const转换。网址:yii666.com<

char *p = "test";

w_char *pw = L"test";
把一个const的字符串类型转成non-const的。包括指针和数组

 

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png