该指针计划中的分割故障



我每当我尝试运行此C程序时都会收到分段故障(核心倾倒)消息。

#include <stdio.h>
int main()
{
    int i = 200, *p, *q, *r;
    p,r = &i;
    q = p;
    *q = *p + 1;
    printf("*p = %dn", *p);
    printf("*r = %dn", *r);
    return 0;
}

起初它没有任何r s,但我必须将r S作为别名添加到i中,然后添加打印语句以输出qr的验证值。

在您的代码

p,r = &i;

没有分配p,它会使p非初始化。接下来,当您放弃p的那一刻(以及q,也要分配了p的值) 未定义的行为,因为您会删除无效的内存。

您需要使用

p = r = &i;

启用了适当的警告来编译您的代码,并且使用代码,您应该看到类似于

的东西

警告:逗号表达的左手操作数没有效果[-wunused-value]

 p,r = &i;
  ^

使用以下:

p = &i;
r = &i;

而不是

p,r = &i;

非初始化的指针不好。

//I write that as an answer because i still don't have 50 reputation

1:我不明白您想要该程序会做什么。Q和R的使用是没有用的。

2: p,r=&i;不是一个好命令。使用p=r=&ip=&i; r=&i;p=&i; r=p;

我已经在您的代码中进行了更正,并且可以很好地研究它。

`#include <stdio.h>
int main()
{
    int i = 200, *p, *q, *r;
    p = &i;
    r = &i;    
    q = p;
    *q = *p + 1;
    printf("*p = %dn", *p);
    printf("*r = %dn", *r);
    return 0;
}`

相关内容

  • 没有找到相关文章

最新更新