读书人

请问一个字符串空间分配的有关问题

发布时间: 2012-03-04 11:13:33 作者: rapoo

请教一个字符串空间分配的问题 ?
char Name[20] = "Hello";
Name = "ok";//为什么这个赋值是错的?
char *p = "Hello";
p = "ok";//而这个是对的呢?
内存空间是怎么分配, 在堆里分配,还是栈中?
请大家帮忙分析一下?谢谢!

[解决办法]
数组首地址不能变(虽然内容可以变),而字符串指针可以变(内容当然也可以变)。

[解决办法]
char Name[]=“sss”
在栈上分配一系列空间,这些空间的首地址用Name标示,所以在Name生命周期中,Name的值是恒定的~~~常量,不允许修改~~~“sss”以字符‘s’,‘s’,‘s’,‘\0’储存在这些空间里~~~
char *p=“ss”;
“ss”存在常量区,并把字符串的首地址付给p,常量区数据也允许修改~~~~~

读书人网 >C++

热点推荐