可能重复:
char a [] =“string”有什么区别; 和char * p =“string”;
char *str = "Hello"; printf("%c",++*str);
这使用gcc在linux上产生分段错误。 第一个语句改为as的那一刻
char str[10] = "Hello";
有用。 可能是什么原因?
尝试修改字符串文字是未定义的行为。
编译器可以将它放在只读存储器中(就像你的情况一样)。 尝试修改只读内存可能会触发段错误。
这句话char *str = "Hello";
在RO-section中存储字符串“Hello”,并将RO-section(其中存储“Hello”)区域的地址分配给str。 存储在RO部分中的数据无法修改,因此您将获得段错误。
char str[10] = "Hello";
也是错的。 你应该写
char str[10]; strncpy(str,"Hello",sizeof(str));
以上就是c/c++开发分享指针和字符串导致分段错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/523145.html