當前位置:編程學習大全網 - 編程語言 - 怎麽定義NULL

怎麽定義NULL

怎麽定義NULL

 怎麽定義NULL

 作為壹種風格, 很多人不願意在程序中到處出現未加修飾的0。因此定義了預處理宏NULL (在 和其它幾個頭文件中) 為空指針常數, 通常是0 或者((void *)0) 。希望區別整數0 和空指針0 的人可以在需要空指針的地方使用NULL。

 使用NULL 只是壹種風格習慣; 預處理器把所有的NULL 都還原回0, 而編譯還是依照上文的描述處理指針上下文的0。特別是, 在函數調用的參數裏, NULL之前(正如在0 之前) 的類型轉換還是需要。

 NULL 只能用作指針常數;

 拓展1:將壹個數的從第5位開始的7個數取出,其余位置0

 解:#include

 main()

 {

 int n;

 printf(?input n:?);

 scanf(?%d?,&n);

 n=n&(∽(∽0<<7))<<5;

 printf(?%d\n?,n);

 };

 拓展1:NULL指針

 NULL指針是壹個無類型指針,並且值為0。壹個指針,擁有2個屬性--地址值和指針類型。兩者的作用是:1,地址值標識變量的首地址(32位系統下指針的地址值占4字節);2,指針類型告訴編譯器,應該怎樣進行接下來的數據訪問(int型數組和float型數組是不同的;數組訪問與結構體訪問也是不同的;等等)。

 NULL的出現是壹種約定俗成,事實上它不是C語言中的關鍵字;把壹個指針賦值為NULL,通常的說法是?將指針懸空?。這樣,指針就無法再進行任何數據訪問了。

 編程工作中有壹類比較容易犯的錯誤--指針地址未進行正確的更新賦值就加以使用,這往往會造成很嚴重的後果(對內存區進行錯誤的塗抹)。所以壹個良好的`習慣是,當壹個指針的工作稍事休息,先把它賦值為NULL,待到再度使用時,重新對其賦值以及進行指針類型轉化。

 前面說到?NULL指針無法再進行任何數據訪問?,其實是視編譯器功能而定的。0位置指向的是程序起始,對於不同的編譯器,NULL指針的操作結果是不同的:有些是不準讀寫,有些是只讀,甚至讀寫都允許。編譯器是人定的。

 引用網友win_hate在話題?關於NULL的不嚴謹?中的話來說:?如果說有誰不嚴謹了,那必定是讀取0位置的程序員,而不是C。C的設計哲學之壹是:?程序員知道自己在幹什麽--沒有安全帶?。

?

;

  • 上一篇:C++標準庫,標準程序庫,標準模板庫之間是什麽關系
  • 下一篇:文員求職簡歷模板範文7篇
  • copyright 2024編程學習大全網