求助 界面有看不清楚的 可以先回复
不太会弄
见谅
谢谢
根据楼上的建议改了下你的代码 #include<stdio.h> int main (int argc, char *argv[]) { const char * str = "shiyuanlimwei"; const char *s="w"; printf("\n%s",str); str=s; printf("\n\n%c",*str); printf("\n\n%s",str); //你的代码可浓缩为一句 "shiyuanlimei"[0] = 'w'; }
[此贴子已经被作者于2020-2-19 17:50编辑过]
#include <stdio.h> int main(void) { const char* str = "shiyuanlimei"; str[0] = 'w'; puts( str ); }此时,会直接编译失败,阻止了可怖的“未定义行为”。
#include <stdio.h> int main(void) { char str[] = "shiyuanlimei"; puts( str ); str[0] = 'w'; puts( str ); }此时,编译通过,运行正常。
感谢楼上指正了我一个很大的错误128150;128150;128150; 字符串文字是一个常量 如果初始化成非常量指针,在c99中可能是允许的,但在c++98中弃用,c++11已经被删除, const char*是规范表达 字符串文字不可被修改,尝试修改字符串文字是个很傻也很古董的行为,因为会引起冲突 字符串文字最大长度65535byte s #include<stdio.h> int main () { char str[] = "shiyuanlimwei"; printf("\n%s",str); //str=s; str[0]='w'; printf("\n\n%c",*str); printf("\n\n%s",str); }