这里在下面给出的c代码中,我声明了一个整数指针但未初始化意味着它是野指针,所以当我尝试取消引用它时应该给出分段错误。但是没有给出SAG.FAULT,为什么呢?
(在linux环境下使用gcc编译器)
/*not giving segmentation fault*/
#include<stdio.h>
int main()
{
int *p ;
printf("%p\n",p);
printf("%p\n",*p);
return 0;
}
如果我使用某个值初始化该指针,而不是在下面给出的代码中给出我的分段错误
/*it is giving segmentation fault*/
#include<stdio.h>
int main()
{
int *p =12444 ;
printf("%p\n",p);
printf("%p\n",*p);
return 0;
}
答案 0 :(得分:2)
.col-md-6
声明一个指向整数的指针。取消引用它并不会给你带来段错误,因为它指向一个未知的位置。
int *p
这种说法是错误的。指向整数的指针用于保存整数的地址。所以你基本上是通过为指针指定随机数来滥用这个功能,这是非法的。
例如,
实际用法应为
int *p = 12444;