本文介绍了对字符串文字的cha​​r * 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";

这篇关于对字符串文字的cha​​r * P C运行时错误(未定义的行为),用于执行++ *(P +)=" ABCD"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 15:31