NULL指針
在C語言的頭文件stddef.h中,NULL的定義如下:
#define NULL
#define __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
#interface NULL 0
可見,NULL指針是一個無類型指針,並且值為0。一個指針,擁有2個屬性--地址值和指針類型。兩者的作用是:1,地址值標識變數的首地址(32位系統下指針的地址值佔4位元組);2,指針類型告訴編譯器,應該怎樣進行接下來的數據訪問(int型數組和float型數組是不同的;數組訪問與結構體訪問也是不同的;等等)。
NULL的出現是一種約定俗成,事實上它不是C語言中的關鍵字;把一個指針賦值為NULL,通常的說法是「將指針懸空」。這樣,指針就無法再進行任何數據訪問了。編程工作中有一類比較容易犯的錯誤--指針地址未進行正確的更新賦值就加以使用,這往往會造成很嚴重的後果(對內存區進行錯誤的塗抹)。所以一個良好的習慣是,當一個指針的工作稍事休息,先把它賦值為NULL,待到再度使用時,重新對其賦值以及進行指針類型轉化。
前面說到「NULL指針無法再進行任何數據訪問」,其實是視編譯器功能而定的。0位置指向的是程序起始,對於不同的編譯器,NULL指針的操作結果是不同的:有些是不準讀寫,有些是只讀,甚至讀寫都允許。編譯器是人定的。引用網友win_hate在話題「關於NULL的不嚴謹」中的話來說:「如果說有誰不嚴謹了,那必定是讀取0位置的程序員,而不是C。C的設計哲學之一是:『程序員知道自己在幹什麼--沒有安全帶』」。
NULL與0的疑惑
NULL與0有著扯不斷理還亂的關係,其實不那麼高深。0本身有著一些原生的特性諸如:起始,沒有,正負的分界線,0/1中的0還可以表示否定。NULL正需要這些特性中的一部分。 我們只需要清楚NULL的本質,並在合理的地方才加以利用而非濫用。譬如我想做一個比較某個整數i是否為0,難道寫成i==NULL會比i==0更酷一點嗎?
PHP NULL
特殊的NULL值表示一個變數沒有值。NULL類型唯一可能的值就是NULL
注:NULL類型是 php 4 引進的。
在下列情況下一個變數被認為是NULL
被賦值為NULL
尚未被賦值。
unset()

1語法

NULL類型只有一個值,就是大小寫敏感的關鍵字NULL
<?php$var = NULL;?>

2其他解釋

在穿越火線遊戲中,null為各種團隊競技類地圖,null在每日任務中經常出現,也就是在團隊競技地圖(團隊競技地圖包括運輸船TD、金字塔TD等)中遊戲N場或殺敵N人。
上一篇[VarType]  

相關評論

同義詞:暫無同義詞