[英]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.