⑴ c語言傳遞函數指針參數能否傳遞NULL
可以,但子函數中要謹慎處理,不然會出問題,如
int fun( int *p )
{
//if ( *p !=0 ) 錯誤的引用方法,會導致程序異常
if ( p && *p ) //正確的引用方法,保證p不是NULL時才讀。
return 1;
return 0;
}
void main()
{
int x=fun(NULL) ;
}
經常用到的time(NULL); 也是傳NULL指針的一個應用。
⑵ C語言中的NULL
C語言NULL定義,定義如下:
#undef
NULL
#if
defined(__cplusplus)
#define
NULL
0
#else
#define
NULL
((void
*)0)
#endif
所以我覺得,如果一個指針被賦予NULL,應該就相當於這個指針執行了0x0000這個邏輯地址,但是C語言中0x0000這個邏輯地址用戶是不能使用的(有些人說是因為0x0000沒有映射到物理地址,也有人說是因為0x0000映射到的地址是操作系統用於判斷野指針的,我也不太懂,總之就是用戶不能使用啦),所以當你試圖取一個指向了NULL的指針的內容時,就會提示段錯誤,聽著有點繞,看程序:
int
*node=NULL;
int
a=0;
a=*node;
printf("%d\n",a);
由於node執行的是NULL,也就是邏輯地址0x0000,而這個地址用於是不能訪問的,所以編譯器提示段錯誤。
⑶ C語言time(NULL)是什麼樣的怎麼用NULL作為參數就是當前時間
C語言time(NULL)是以當前時間為種子,產生隨意數。
其中,time(NULL)用來獲取當前時間,本質上得到的是一個大整數,然後用這個數來隨機數。
time()這個函數其實保存的是一個歷史時間,所以需要用NULL把這個歷史時間清空一下,time()就會自動保存當前時間了。你可以簡單的理解為NULL就是給time()初始化。
⑷ C語言中NULL有什麼作用具體用法是什麼
NULL 其實就是 #define NULL 0 也就是說它就是0 不過是寫代碼的時候為指針什麼的賦值或判斷指針是否為空時看起來直觀一些。
⑸ c語言如何給指針參數賦值為null
用指針的引用即可.
例如:
int
memnull(int
*¶m)
{
param
=
NULL;
return
0;
}
在另一個函數里調用它:
int
*a;
memnull(a);
memnull運行完之後a的地址就被修改為NULL了.
或者可以用指針的指針:
int
memalloc(int
**param)
{
*param
=
NULL;
return
0;
}
調用的時候這樣調用:
int
*a;
memnull(&a);
這樣memnull函數運行完後a的地址也會被修改為NULL.
同理其他操作,申請空間,改變指向等,也可以用指針的引用和指針的指針這兩種方法完成.不過還是推薦指針的引用,在寫代碼時不容易寫錯.
⑹ c語言如何給指針參數賦值為null
樓主 其實很簡單,例如你定義一個int a;
然後把&a的帶入你的函數中,函數的形參為int *p;
在函數中把*p=null,不過最好是用宏定義,把null定位0;
這樣a變數的地址所指向的值就變為0了
你要是有什麼不懂得可以找我
⑺ c語言函數聲明中將函數指針參數設置為NULL的默認值
指定形參默認值是C++的語法,標准C是不支持這種語法的。
使用c++語法,通常可以保存文件時使用CPP後綴保存。
另外,形參的默認值是在聲明函數原型的時候指定,不是在函數定義的時候指定。