gpt4 book ai didi

对字符串文字 char *p = "abcd"执行++*(p++) 时出现 C 运行时错误(未定义行为)

转载 作者:行者123 更新时间:2023-11-30 20:44:57 24 4
gpt4 key购买 nike

问题1:

int main()
{
char *p="abcd";
printf("%c",*(p++));
return 0;
} // Here it will print a

问题2:

int main()
{
char *p="abcd";
printf("%c",++*(p++));//why it is showing error over here
return 0;
} // Here it shows runtime error.

有人可以向我解释一下为什么语句++*(p++) 会导致运行时错误吗?

最佳答案

char *p="abcd";

"abcd" 是一个字符串文字,并且字符串文字在 C 中是不可修改的。尝试修改字符串文字会调用未定义的行为。

使用由字符串初始化的可修改数组来解决您的问题:

char p[] ="abcd";

关于对字符串文字 char *p = "abcd"执行++*(p++) 时出现 C 运行时错误(未定义行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594927/

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