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 的語法,...