在C中,可以在如下声明中使用字符串文字:
chars[]=“你好”;
或者像这样:
char*s=“你好”;
那么有什么区别呢?我想知道在编译时和运行时,在存储持续时间方面实际发生了什么
这里的区别是
char*s=“你好世界”;
将把“Hello world”放在内存的只读部分,并使s成为指向该内存的指针,从而使该内存上的任何写入操作都是非法的
在这样做时:
chars[]=“你好,世界”;
将文本字符串置于只读内存中,并将字符串复制到堆栈上新分配的内存中。从而使
s[0]='J';
合法的