[英]c pointers 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;
定义a
和p
,其中星号不表示取消引用,而是将通常的int
定义与int*
指针定义区分开。 该行相当于
int a = 5;
int* p = &a;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.