如何是一個指針變量成為空指針:
如果 p 是一個指針變量,則 p = 0;、p = 0L;、p = ‘\0’;、p = 3 - 3;、p = 0 * 17; 中的任何一種賦值操作之後(對於 C 來說還可以是 p = (void*)0;), p 都成為一個空指針,由系統保證空指針不指向任何實際的對象或者函數。
NULL: 是一個標准規定的宏定義,用來表示空指針常量。用 p = NULL; 來使 p 成為一個空指針。
空指針的判斷:指針變量 p 是空指針的判斷:
if ( p == 0 )
if ( p == ‘\0’ )
if ( p == 3 - 3 )
if ( p == NULL ) /* 使用 NULL 必須包含相應的標准庫的頭文件 */
if ( NULL == p )
if ( !p ) <—————(這裡和下面的if(p)都被專門說過一次,null定義不一定是0.這裡如果貿然使用!p會很危險的.所以這種寫法不能被提倡)
…
指針變量 p 不是空指針的判斷:
if ( p != 0 )
if ( p != ‘\0’ )
if ( p != 3 - 3 )
if ( p != NULL ) /* 使用 NULL 必須包含相應的標准庫的頭文件 */
if ( NULL != p )
if ( p )
if ( p != q )