关于GCC,Linux环境下c语言中的指针

时间:2015-10-31 16:34:47

标签: c linux pointers gcc dereference

这里在下面给出的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;
}

1 个答案:

答案 0 :(得分:2)

.col-md-6

声明一个指向整数的指针。取消引用它并不会给你带来段错误,因为它指向一个未知的位置。

int *p

这种说法是错误的。指向整数的指针用于保存整数的地址。所以你基本上是通过为指针指定随机数来滥用这个功能,这是非法的。

例如,

实际用法应为

int *p = 12444;