本文介绍了对字符串文字的char * P C运行时错误(未定义的行为),用于执行++ *(P +)=" ABCD"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题1:
INT的main()
{
的char * p =ABCD;
的printf(%C,*(P ++));
返回0;
} //这将打印
问题2:
INT的main()
{
的char * p =ABCD;
的printf(%C,++ *(P ++)); //为什么它显示出在这里的错误
返回0;
} //这表明运行时错误。
可有人请向我解释为什么声明++ *(P ++)会导致运行时错误。
解决方案
的char * p =ABCD;
ABCD
是一个字符串文字,字符串文字是不可修改的C.试图修改字符串调用未定义的行为。
使用一个字符串初始化的修改阵列解决您的问题:
字符P [] =ABCD;
Question 1:
int main()
{
char *p="abcd";
printf("%c",*(p++));
return 0;
} // Here it will print a
Question 2:
int main()
{
char *p="abcd";
printf("%c",++*(p++));//why it is showing error over here
return 0;
} // Here it shows runtime error.
Can someone please explain to me why the statement ++*(p++) causes a runtime error.
解决方案
char *p="abcd";
"abcd"
is a string literal and string literals are unmodifiable in C. Attempting to modify a string literal invokes undefined behavior.
Use a modifiable array initialized by a string literal to fix your issue:
char p[] ="abcd";
这篇关于对字符串文字的char * P C运行时错误(未定义的行为),用于执行++ *(P +)=" ABCD"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!