gpt4 book ai didi

c - 为什么在此 C 程序中写入字符串文字会出现段错误?

转载 作者:太空狗 更新时间:2023-10-29 17:27:10 25 4
gpt4 key购买 nike

#include<stdio.h>

void main()
{
char *p="nyks";

p[2]='n';

printf("%s",p);
}

这会因SEGMENTATION FAULT 而崩溃。谁能解释一下为什么?

最佳答案

尝试覆盖字符串文字是未定义的行为。 C99 §6.4.5/6:

If the program attempts to modify such an array, the behavior is undefined.

这在附录 J.2 中重述(未定义的行为)。

如果你这样做:

char p[] = "nyks";

您可以分配和初始化一个自动(堆栈)字符数组。在这种情况下,修改元素是完全没问题的。

关于c - 为什么在此 C 程序中写入字符串文字会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638851/

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