簡體   English   中英

關於在GCC,Linux環境中使用C語言編寫的指針

[英]about pointer in c language in GCC,Linux environment

在下面給出的C代碼中,我聲明了一個整數指針,但未初始化表示它是野生指針,因此當我嘗試取消引用它時,應該給出分段錯誤。但未給出SAG.FAULT,為什么?

(在具有gcc編譯器的linux環境中)

/*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;
}
int *p

聲明一個指向整數的指針。 取消引用它並不會給您帶來段錯誤,因為它指向某個未知位置。

int *p = 12444; 

這個說法是錯誤的。 指向整數的指針用於保存整數的地址。 因此,您基本上是通過向非法的指針分配隨機數來濫用功能。

例如,

實際用法應該是

int a;   // Declare a variable
int *p;  // Declare a pointer
p = &a   // Initialize p with the address of a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM