判斷空指標的0與nullC語言中空指標0與NULL相同嗎

2021-03-09 19:02:01 字數 2767 閱讀 7313

1樓:匿名使用者

1,2是錯的bai,3,4是對的

,從**的簡潔du性來說當然是zhi3最簡潔不過了,但是dao從程式的可讀性來考慮,回就是4比較答容易讓人一下子讀懂。在c++中null與0是一樣的,只是程式語言編譯的時候的語義分別

實際上都是 0

比如 c 的巨集定義檔案裡你就可以看到

#if __cplusplus

#define null 0

#else

#define null (void*)0#endif

2樓:匿名使用者

首先,覆在編譯器看來,null 和制 0 其實是一樣的,(null其實也就是一個巨集定義)

其次,*p是取指標裡

面的內容即裡面存的地址

最後,if判斷的時候,建議寫成:if (null != p),把常量放在前面,養成良好的程式設計習慣

3樓:匿名使用者

第一和第二種都是錯誤的。後兩種是對的,且等價。建議你用if(p != null),顯得規範一點。

4樓:小胖毛毛蟲

在c++裡面有最有選擇,就是第一種:因為他們內建了null=0;這樣讓程式看起來更加明瞭。其他的也可以實現,但是可讀性不高!

c語言中空指標0與null相同嗎

5樓:匿名使用者

c語言的0和null的確是相同的,null其實是一個#define定義,在每一種c語言編譯器中都有標頭檔案來定義null這個符號,null的定義類似於這樣:

#define null 0

所以空指標0和空指標null是一回事。

空指標和0有什麼區別

6樓:匿名使用者

這是與編譯器有關的.

比如byte a=0xff; //它的範圍就定死在0-255之間

word b=0xffff;//範圍就16位數字,更大...

這樣如果強制轉換 成byte,那麼這二個相等,反之強制轉成word當然是後者更大範圍.

在我們人感覺來看 a與b同為0但機器編譯後實際上分配的空間是不同的.

所以在c語言的地方往往 int *p=0與 int *p=null是一樣的.

但是你加了(void*)就代表這是個功能函式指標,而你這個是變數指標;型別當然不配了.

另外還要看看 編譯器在編譯過程中還有選擇性的編譯.#if #else #endif...等.

巨大的**後,不能光看幾行下定論.

7樓:匿名使用者

null的ascii碼值就是0,在c++中,有人推薦直接用0代替null,因為這樣可以少鍵入3個字元。

null可以賦給任意型別的指標。

int *p = (void *) 0; // 涉及到兩次強制型別轉換,在vc++ 6.0中的錯誤資訊是: conversion from 'void*' to pointer to non-'void' requires an explicit cast。

8樓:

很明顯這是不可能的,你肯定漏了東西。

c++中「null」和「0」的區別是什麼?

9樓:若葉七夜西

0是一個數字,本身有著一些原生的特性諸如:起始,沒有,正負的分界線,0/1中的0還可以表示否定。0可以表示數字0,也可以表示ascii碼值為0的字元。

null用於將指標指定為空指標,也就是說該指標不指向任何物件,不可以對該指標進行解引用,否則系統會報錯。

在數值上null,'\0',0是一樣的,都是0,但'0'就不同了,在ascii碼中編碼為48,所以字元0和上述三個值不同。

什麼是 null?

[6.3.2.

3-footnote] the macro null is defined in (and other headers) as a null pointer constant

即 null 是一個標準規定的巨集定義,用來表示空指標常量。因此,除了上面的各種賦值方式之外,還可以用 p = null; 來使 p 成為一個空指標。

指標的概念

指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。要搞清一個指標需要搞清指標的四方面的內容:指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。

malloc 函式在分配記憶體失敗時返回 0 還是 null?

malloc 函式是標準 c 規定的庫函式。在標準中明確規定了在其記憶體分配失敗時返回的是一個 「null pointer」(空指標):

[7.20.3-1] if the space cannot be allocated, a null pointer is returned.

對於空指標值,一般的文件(比如 man)中傾向於用 null 表示,而沒有直接說成 0。但是我們應該清楚:對於指標型別來說,返回 null 和 返回 0 是完全等價的,因為 null 和 0 都表示 「null pointer」(空指標)。

『\0』:『\0』是一個「空字元」常量,它表示一個字串的結束,它的ascii碼值為0。注意它與空格' '(ascii碼值為32)及'0'(ascii碼值為48)不一樣的。

在c/c++中,當要給一個字串新增結束標誌時,都應該用『\0』而不是null或0。

當我們要置一個指標為空時,應該用null,當我們要給一個字串新增結束標誌時,應該用『\0』。

C語言中的空指標是什麼意思,C語言中,空指標NULL會佔記憶體嗎?多少位元組

這樣一看才知道大家對空指標的概念如此渾濁哦 首先 void 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.還有 0 這也不是空指標所指的內容.0 是表示一...

c語言陣列與指標問題,c語言陣列與指標的問題關係請教

1,書上說的不準確,陣列應該看做一種獨立的型別,sizeof只與型別有關。詳細的可以參考這個 http 如果你弄明白了這個剩下就簡單了。2,我先說一下結論吧。按照你的要求應該這樣定義p int p 3 因為你想要的是訪問每一行的數字,所以需要p為整型指標的陣列,這樣每個元素是整型指標,可以像p 1 ...

C語言,函式指標定義中實參表為空的問題

如果函式宣告是void fun int n,char s 那麼指向該函式的指標宣告也必須是void pf int,char void pf 是錯誤的,不能用於指向該函式。函式指標只是個指標,關鍵是呼叫時,引數是否一致。c語言函式宣告中將函式指標引數設定為null的預設值 指定形參預設值是c 的語法,...