『壹』 C/C++中,NULL和null的區別是什麼
c語言和C++對大小寫是敏感的,也就知是說null和NULL是區別對待的。NULL(如已宏定義)代表空地址,null(如沒宏定義)只是一個符號。
1、其實null和NULL都是字元串,具體看它們宏定義被定義成為什麼值。
2、在VS中NULL被定義為0,因為習慣上把宏定義的所有字元都大寫,當把NULL它賦值給指針時意思為空,當然你也可以把null定義為0了,都一樣。你把0直接賦值給指針也行,只要指針指向0就為空。
3、對於空(null)指針的概念,在 C 標准中明確地定義:值為 0 的整型常量表達式,或強制(轉換)為「void*」類型的此類表達式,稱為空指針常量。
4、當將一個空指針常量賦予一個指針或與指針作比較時,將把該常量轉換為指向該類型的指針,這樣的指針稱為空指針。空指針在與指向任何對象或函數的指針作比較時保證不會相等。
(1)c語言中null是大寫還是小寫擴展閱讀
在C中,任何類型的兩個空指針都保證比較相等。預處理器宏NULL被定義為實現定義的空指針常量,它在C99中可以可移植地表示為0隱式或顯式轉換為類型的整數值void*(指向void的指針)。
C標准沒有說空指針與指向內存地址0 的指針相同,盡管在實踐中可能就是這種情況。解引用空指針是C中的未定義行為,並且允許符合要求的實現假定任何被解除引用的指針不為空。
參考資料
網路—Null
網路—C/C++
『貳』 寫成null或是NULL都可以吧C語言里不區分這個的大小寫吧
C語言里是區分大小寫的
null和NULL是不一樣,
但是看你的編譯器是否將null和NULL都定義了。
我在VC++6.0上確認了,
VC++6.0上只在stdio.h中定義了
#define NULL 0
而沒有定義null,
所以在VC++6.0上如果直接使用null的話,會報錯
『叄』 C語言用來CHAR還有NULL
15.C
解析:A B 空指針不可以賦值。會出錯。
D 指針未賦值。 野指針不可以使用。
16.A
解析:如果null是小寫的話,那麼這道題選B,C中大小寫有區分,大寫的NULL實際上就是系統定義的一個符號常量,它的值為0,也就是如果是
printf("%d\n",NULL);那麼輸出為0,選A
『肆』 null與NULL
其實null和NULL都是字元串,看你把它們,宏定義為什麼值,在VS中NULL被定義為0,因為習慣上把宏定義的所有字元都大寫,當把NULL它賦值給指針時意思為空,當然你也可以把null定義為0了,都一樣的啦!它們都沒定義時都只能叫符號了,定義後就有另外的意思了,你把0直接賦值給給指針也行,只要指針指向0就為空啦!其實NULL在有些編譯器中是賦為0了,這時你不能再去#define定義它了,否則就重定義了!
『伍』 C語言"NULL","true","false"的值都是多少
NULL=0
FALSE=0
TRUE記得是-1,但是如果用於if語句中,任何非0值都是true。但是TRUE一個宏,無法覆蓋所有情況。所以切記不要寫出TRUE==(表達式)這樣的判斷,因為這樣的判斷往往都是錯誤的
舉例來說,intbitmask=0x0010000;
if(~bitmask)//這是true的
if(TRUE==~bitmask)//雖然你想要達到的目的和上面一樣,但是實際這會是false。
『陸』 C語言中「null」是大寫還是小寫
這個要看你的開發環境中有沒有定義,定義的是哪一個。以前的VC6.0中有
#define NULL 0
c語言中:
#define NULL (void*)0
也就是說NULL只是一個宏定義,是大寫的,小寫沒有定義。並且NULL值分別是0和值為0的空指針。