gpt4 book ai didi

c - char * 赋值的段错误

转载 作者:行者123 更新时间:2023-11-30 19:48:33 34 4
gpt4 key购买 nike

我试图理解以下程序中 char * 赋值的段错误,位置为 *p = 'Z'

void main()
{
char *p ="abcdefg";
*p = 'Z';
}

当谷歌搜索时,我确实找到了很多答案的链接,如下所示1. 这是一个字符串文字,一旦分配就不能更改其值2. 字符串文字不能赋值给*p3. 获取一个可以更改的 malloc...等等...

但我担心的是,如果字符串文字值无法更改,因为它是常量,那么当我们更改整数的常量值时,为什么我们不会出现段错误。有人可以帮助我更好地理解这一点吗?

-普拉山斯

最佳答案

这是未定义的行为。如果你有一个常量字符串,标准规定字符串文字不能被修改。所以它是否可写取决于架构,它可能会也可能不会出现段错误。

更新从评论中添加。

关于c - char * 赋值的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18032691/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com