原创 C语言中用字符串初始化字符指针时的问题

2011-2-16 22:12 2183 2 2 分类: MCU/ 嵌入式

attachment download


附件里是从网上找的一篇关于C语言中内存管理的文章。



char amessage[]="hello world"; 

char *pmessage="hello world";


上面两种定义字符串的方式有着非常大的区别,第一个区别就是amessage[]是一个字符数组,而pmessage是一个指针。第二个区别是定义amessage的时候会拷贝代码区中的“hello world"到它自己申请的堆栈空间去,而上面定义的pmessage指向的是代码区的一段内存”hello world“,是只读的,如果程序中包含如下的代码:

char *pmessage="hello world";

*pmessage=65;

在运行中会报错,因为pmessage指向的内存是只读的,不允许修改。(在linux下可以编译通过)。


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /4 下一条