c指针段错误

标签 c segmentation-fault

案例 1:

#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);
}

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

最佳答案

*p = &a;

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

int a = 5,*p = &a;

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

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

关于c指针段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33848298/

相关文章:

c 编程搜索文件中的字符串

c - 如何让我的程序识别制表符并将其转换为普通空格?

C:如何释放链表中的节点?

c++ - 运行 3 个线程时出现段错误

c++ - 在结构内声明变量时出现段错误

C用数学函数初始化三维数组?

c - 在宏或函数之间切换

c - 以基本方式使用线程的段错误

c - 我该如何处理这个段错误

c - 如何解决此错误 : segmentation fault?