刚才看了一则关于字符串的帖子,大意如下
char * p="abcde";
p[2]='m';
这段代码为什么运行会出错。
很多热心的读者进行了评论,结论是字符串常量放在常量数据区,不能修改。
在<<C++编程金典》中我看到了这样一段话,觉得很好,摘录如下:
当用字符串直接量初始化char*类型的变量时,有些编译器将字符串放在内存中无法修改它的位置。
也就是说这段代码未必一定出错。
当然,上述代码在VC 6.0中运行是会出错的。
刚才看了一则关于字符串的帖子,大意如下
char * p="abcde";
p[2]='m';
这段代码为什么运行会出错。
很多热心的读者进行了评论,结论是字符串常量放在常量数据区,不能修改。
在<<C++编程金典》中我看到了这样一段话,觉得很好,摘录如下:
当用字符串直接量初始化char*类型的变量时,有些编译器将字符串放在内存中无法修改它的位置。
也就是说这段代码未必一定出错。
当然,上述代码在VC 6.0中运行是会出错的。