【问题标题】:c pointers segmentation faultc 指针分段错误
【发布时间】:2016-02-24 05:12:08
【问题描述】:

案例一:

#include <stdio.h>
int main()
{
 int a = 5,*p;
 *p = &a;
  printf("%d",*p);
 }

上述程序给出了分段错误问题。但在案例 2 中它工作正常。 案例 2:

#include <stdio.h>
int main()
{
int a = 5,*p = &a;
printf("%d",*p);
}

谁能解释一下这个问题。谢谢你。

【问题讨论】:

  • 是的,任何初学者的 C 语言教程都可以解释这个问题。搜索、阅读;可怕的话语,想想。 (这是微不足道的。
  • 我投票结束这个问题,因为 Stack Overflow 不是初学者的教程网站。
  • p 的类型是int *。您在案例 1 中分配 p,而不是 *p

标签: c segmentation-fault


【解决方案1】:
*p = &a;

取消引用p 并将&amp;a 分配给内存位置p 指向。指针未初始化,因此取消引用它会产生未定义的行为(因此出现分段错误)。

int a = 5,*p = &a;

定义ap,其中星号并不表示取消引用,而是将通常的int 定义与int* 指针定义区分开来。该行相当于

int a = 5;
int* p = &a;

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 2012-04-10
    • 2021-04-10
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多