NULL和0的區別
在C語言中
NULL
和0
的值都是一樣的,但是為了使得目的和用途及容易識別,NULL
用於指標和物件,0
用於數值對於字串的結尾,使用\0
,它的值也是0
,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值
在不同的系統中
NULL
並非總是和0
等同,NULL
僅僅代表空值,也就是指向一個不被使用的地址,在大多數系統中,都將0
作為不被使用的地址,所以就有了類似這樣的定義
#define NULL 0
但並非總是如此,也有些系統不將0
地址作為NULL
,而是用其他的地址,所以說,千萬別將NULL
和0
等價起來,特別是在一些跨平臺的程式碼中,這更是將給你帶來災難。
code by C
int main()
{
int *p=NULL;
printf("%s",p);
return 0;
}
單步除錯可以看出執行int *p=NULL
,p
的值為0x00000000
,可以看出,NULL
在實際底層呼叫中就是0
。
相關文章
- MySQL中is not null和!=null和<>null的區別MySqlNull
- JavaScript中0, "", null, false, undefined的區別JavaScriptNullFalseUndefined
- null 和 undefined 的區別NullUndefined
- null 和 undefined 的區別!NullUndefined
- undefined 和 null 區別?UndefinedNull
- null和undefined區別NullUndefined
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- javascrit中undefined和null的區別JavaUndefinedNull
- Object.create(null) 和 {} 的區別ObjectNull
- js中null和undefined的區別JSNullUndefined
- js中undefined和null的區別JSUndefinedNull
- /dev/zero和/dev/null的區別devNull
- 0、""(空字串)、Null、Empty、與 Nothing 的區別 (轉)字串Null
- Java中空串和null串的區別JavaNull
- Null 與 “” 的區別Null
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- undefined與null的區別UndefinedNull
- Objective-c nil, Nil, NULL和NSNull的區別ObjectNull
- String str=null; 和String str=""的區別Null
- PHP中empty、isset和is_null的使用區別PHPNull
- LOB欄位EMPTY_LOB和NULL的區別Null
- Python中none和null的區別詳解!PythonNoneNull
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- AIX en0 et0 和ent0的區別AI
- Object.create(null) 和 {} 區別是什麼ObjectNull
- PB GetRow() 和 GetSelectRow(0) 的區別
- 別名的使用和nullNull
- python None與Null 的區別PythonNoneNull
- JavaScript undefined與null區別JavaScriptUndefinedNull
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- PHP7 ?? 與 ?: 的作用和區別(null合併運算子, null條件運算子)PHPNull
- RAID 1+0和RAID 0+1的區別AI
- border:0和border:none的區別是什麼None
- 你還不知道mysql中空值和null值的區別嗎?MySqlNull
- ORACLE 索引和MYSQL INNODB 輔助索引對NULL的處理區別Oracle索引MySqlNull
- JavaScript 05筆記(null、undefined、NaN的區別)JavaScript筆記NullUndefinedNaN