閱讀433 返回首頁    go 阿裏雲 go 技術社區[雲棲]


C標準中關於空指針的那些事


1 C標準不保證用所有二進製位都為0的變量來表示空指針,但它保證空指針與任何對象或函數的指針都不相等,取地址操作符&永遠也不會返回空指針;

2 C標準稱在指針上下文中的“值為0的整形常量表達式”會在編譯時轉換為空指針;

3 C標準中,在使用非零位模式作為空指針的內部表示的機器上,NULL和其他機器一樣,定義為0或(void*)0,編譯器在指針上下文看到的未加修飾的0都會被生成正確的空指針;

4 C程序猿或媛應該明白,在指針上下文中NULL和0是完全等價的;

5 C確保源代碼中的0(用於指針上下文)會生成空指針;

6 malloc(0)可以返回NULL或者指向0個字節的指針;

7 空指針和空指針常量是2碼事:前者是將後者賦給一個指針類型的結果,且不一定二進製位為全0,而後者2進製為一定為全0,即等於NULL;

8 任何空指針相互比較或和NULL比較結果一定為true,任何空指針和非空指針比較結果一定為false;

9 C中還有一種字麵常量NUL,它的確是全0哦!

最後更新:2017-04-03 05:38:54

  上一篇:go C語言中如何寫一個簡單可移植而又足夠隨機的隨機數生成器
  下一篇:go qq安全原理