1)在c語言中null代表空指標。
例如:int *i = null;
#define null ((void*)0) 意思是null是void*指標,給int *i 賦值的時候隱式轉換為相應型別的指標,但是如果換成c++編譯器編譯的時候會出錯,以為c++是強型別的,void* 不能隱式轉換為其他型別。一般的null定義的標頭檔案為:
/* define null pointer value */
#ifndef null
#ifdef __cplusplus
#define null 0
#else /* __cplusplus */
#define null ((void *)0)
#endif /* __cplusplus */
#endif /* null */
2)c++中 null代表0
c++ 中有函式過載的概念,會導致呼叫二義性。如
void bar(sometype1 a, sometype2 *b);void bar(sometype1 a, int i);
bar(a,null)
呼叫**也很快可能忽略過去了,因為我們用的是null空指標啊,應該是呼叫的void bar(sometype1 a, sometype2 *b)這個過載函式啊。實際上null在c++中就是0,寫null這個反而會讓你沒那麼警覺,因為null不夠「明顯」,而這裡如果是使用0來表示空指標,那就會夠「明顯」,因為0是空指標,它更是乙個整形常量。
在c++中,使用0來做為空指標會比使用null來做空指標會讓你更加警覺。
3)c++11中的nullptr
用nullptr來表示空指標
寧波鼻部整形
NULL nullptr 0剪不斷理還亂的關係
先看下null的定義,在stddef.h中 usr lib gcc x86 64 redhat linux 4.8.2 include stddef.h 在c中,null定義為 void 0 在c 中,一般用null表示空指標,即指標的0值。例如 int p null 正確 int p 0 正確 在...
與 的區別? 與 的區別?
相同點 和 都是表示與的邏輯運算子,其運算結果一致 不同點 邏輯與 當兩邊的表示式都為true的時候,整個運算結果才為true,否則為false。短路與 當第乙個表示式的值為false的時候,則不再計算第二個表示式 注意 還可以做位運算子,當表示式不是boolean型別的時候 例項1 public ...
this 與this的區別
this 與this的區別 相信很多剛接觸jquery的人,很多都會對 this 和this的區別模糊不清,那麼這兩者有什麼區別呢?首先來看看jquery中的 這個符號,實際上這個符號在jquery中相當於jquery 即 this jquery 也就是說,這樣可以返回乙個jquery物件。那麼,當...