求助 界面有看不清楚的 可以先回复
不太会弄
见谅
谢谢
程序代码:
根据楼上的建议改了下你的代码
#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);
}
