Hai*_*er 0 c pointers initialization segmentation-fault
每当我尝试运行此C程序时,我都会收到分段错误(核心转储)消息.
#include <stdio.h>
int main()
{
int i = 200, *p, *q, *r;
p,r = &i;
q = p;
*q = *p + 1;
printf("*p = %d\n", *p);
printf("*r = %d\n", *r);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它没有任何r的第一秒,但我不得不添加rS作为一个别名i,然后打印语句添加到输出的提领值q和r.
在你的代码中
p,r = &i;
Run Code Online (Sandbox Code Playgroud)
没有分配p,它没有p初始化.接下来,在您取消引用的那一刻p(以及q,因为它被分配了值p),您将点击
未定义的行为,因为您正在取消引用无效的内存.
你需要使用
p = r = &i;
Run Code Online (Sandbox Code Playgroud)
编译代码并启用适当的警告,并且使用您的代码,您应该看到类似的内容
警告:逗号表达式的左侧操作数无效[-Wunused-value]
Run Code Online (Sandbox Code Playgroud)p,r = &i; ^