预增量运算符和取消引用运算符导致分段错误,似乎无法理解为什么
Pre increment operator and dereference operator resulting in segmentation fault, can't seem to understand why
在要求计算输出的测试中找到了以下代码。
#include <stdio.h>
int gate(char *P)
{
char *q = P;
q++;
*q++;
++*q;
return(q-P);
}
int main()
{
char *s = "gateexam";
int x = gate(s);
printf("%d",x);
}
运行 它在在线编译器上,但由于某种原因它由于行 "++*q" 而导致分段错误(注释掉这一行使程序 运行 正常).
不明白是什么原因造成的
screenshot of code and output
Can't understand what is causing this
代码中的错误导致了此问题。此程序试图修改字符串文字,这是语言规则所禁止的。
你可以这样修复:
int main()
{
char s[] = "gateexam";
...
在要求计算输出的测试中找到了以下代码。
#include <stdio.h>
int gate(char *P)
{
char *q = P;
q++;
*q++;
++*q;
return(q-P);
}
int main()
{
char *s = "gateexam";
int x = gate(s);
printf("%d",x);
}
运行 它在在线编译器上,但由于某种原因它由于行 "++*q" 而导致分段错误(注释掉这一行使程序 运行 正常).
不明白是什么原因造成的
screenshot of code and output
Can't understand what is causing this
代码中的错误导致了此问题。此程序试图修改字符串文字,这是语言规则所禁止的。
你可以这样修复:
int main()
{
char s[] = "gateexam";
...