共找到5條詞條名為null的結果 展開

null

空指針

NULL是在計算中具有保留的值,用於指示指針不引用有效對象。程序通常使用空指針來表示條件,例如未知長度列表的結尾或未執行某些操作; 這種空指針的使用可以與可空類型和選項類型中的Nothing值進行比較。

空指針不應與未初始化的指針混淆:保證空指針與指向有效對象的任何指針進行比較。但是,根據語言和實現,未初始化的指針可能沒有任何此類保證。它可能與其他有效指針相等; 或者它可能比較等於空指針。它可能在不同的時間做兩件事。

表示


空字元通常表示為源代碼字元串字元或字元常量中的轉義序列。在許多語言,這不是一個單獨的轉義序列,而是八進位轉義序列,單個八進位數字為0;因此,‘\0’不能跟隨任何數字0通過7;否則它被解釋為更長的八進位轉義序列的開始。被在使用中發現各種語言的其他轉義序列\000,\x00,\z,或的Unicode表示\u0000。
表示空字元的能力並不總是意味著生成的字元串將被正確解釋,因為許多程序將認為null作為字元串的結尾。因此,鍵入它的能力(在未經檢查的用戶輸入的情況下)會創建一個稱為 空位元組注入的漏洞,並可能導致安全漏洞。
空字元以逗號表示是^@。在Windows上,可以通過按住Ctrl鍵,然後按@(這通常需要同時按下⇧ Shift並按下數字2鍵)。
在文檔中的空字元有時表示為單EM含有字母“NUL” -width符號。在Unicode中,有一個具有相應字元的字元,用於空字元的可視表示,“null”符號,U + 2400(␀),但不要與實際的空字元U + 0000混淆。

定義


C

在C中,任何類型的兩個空指針都保證比較相等。預處理器宏NULL被定義為實現定義的空指針常量,它在C99中可以可移植地表示為0隱式或顯式轉換為類型的整數值void*(指向void的指針)。C標準沒有說空指針與指向內存地址0 的指針相同,儘管在實踐中可能就是這種情況。解引用空指針是C中的未定義行為,並且允許符合要求的實現假定任何被解除引用的指針不為空。
實際上,取消引用空指針可能會導致嘗試從未映射的內存中讀取或寫入,從而觸發分段錯誤或內存訪問衝突。這可能表現為程序崩潰,或者轉換為可由程序代碼捕獲的軟體異常。但是,在某些情況下並非如此。例如,在x86實模式中,地址0000:0000是可讀的並且通常也是可寫的,並且取消引用指向該地址的指針是完全有效但通常不需要的操作,可能導致應用程序中的未定義但非崩潰的行為。有時解除引用地址為零的指針是有意的、明確的;例如,用C語言編寫的用於16位實模式x86設備的BIOS代碼可以通過解除引用空指針來寫入機器的物理地址0處的IDT。編譯器還可以優化掉空指針解除引用,避免分段錯誤但引起其他不希望的行為。
這通常在頭文件stddef.h下定義:

C++

C ++中,雖然繼承了C的NULL宏,但空指針常量優先解釋為整型0而不是指針值,這極容易導致某些錯誤。故C++ 11引入了一個顯式nullptr常量來代替。

SQL

Null在資料庫中表示 不知道的數據,主要有3種意思:
• 知道數據存在,但不知道具體值.
• 不知道數據是否存在.
• 數據不存在.
NULL與0有著扯不斷理還亂的關係,其實不那麼高深。0本身有著一些原生的特性諸如:起始,沒有,正負的分界線,0/1中的0還可以表示否定。NULL正需要這些特性中的一部分。我們只需要清楚NULL的本質,並在合理的地方才加以利用而非濫用。

MATLAB

函數null用來求解零空間,即滿足方程組A*X=0的解空間。實際上是求出解空間的一組解(基礎解系)。
語法:z=null(A) %z的列向量為方程組的正交規範基,滿足z‘ x z=I。
z=null(A,'r') %z的列向量是方程A*X=0的有理基。

PHP

NULL類型為 php 4 所引進,特殊的NULL值表示一個變數沒有值(NULL類型唯一可能的值就是NULL)。
在下列情況下一個變數被認為是NULL:
• 被賦值為NULL
• 尚未被賦值
• 被unset()

JAVA

java中的null是一個關鍵字,通常用來聲明一個空引用,
表示對象o是一個空引用,如果程序員對它進行了引用,就會拋出一個NullPointerException異常。

編碼


在所有現代字符集中,空字元的代碼點值為零。在大多數編碼中,這被轉換為具有零值的單個代碼單元。例如在UTF-8中,它是一個零位元組。然而,在修改的UTF-8中,空字元被編碼為兩個位元組:0xC0,0x80。這允許值為零的位元組(現在不用於任何字元)用作字元串終結符。