cc中null和null的區別是什麼

2021-03-19 18:35:45 字數 5752 閱讀 1917

1樓:老夏的小可愛

c語言和c++對大小寫是敏感的,也就知是說null和null是區別對待的。null(如已巨集定義)代表空地址,null(如沒巨集定義)只是一個符號。

1、其實null和null都是字串,具體看它們巨集定義被定義成為什麼值。

2、在vs中null被定義為0,因為習慣上把巨集定義的所有字元都大寫,當把null它賦值給指標時意思為空,當然你也可以把null定義為0了,都一樣。你把0直接賦值給指標也行,只要指標指向0就為空。

3、對於空(null)指標的概念,在 c 標準中明確地定義:值為 0 的整型常量表示式,或強制**換)為「void*」型別的此類表示式,稱為空指標常量。

4、當將一個空指標常量賦予一個指標或與指標作比較時,將把該常量轉換為指向該型別的指標,這樣的指標稱為空指標。空指標在與指向任何物件或函式的指標作比較時保證不會相等。

擴充套件資料

在c中,任何型別的兩個空指標都保證比較相等。前處理器巨集null被定義為實現定義的空指標常量,它在c99中可以可移植地表示為0隱式或顯式轉換為型別的整數值void*(指向void的指標)。

c標準沒有說空指標與指向記憶體地址0 的指標相同,儘管在實踐中可能就是這種情況。解引用空指標是c中的未定義行為,並且允許符合要求的實現假定任何被解除引用的指標不為空。

參考資料

2樓:go陌小潔

null在c/c++標準庫中被定義為一個巨集,一般為:

#define null ((void*)0) /*c中的「標準」寫法,null被替換為一個void*型別的指標右值,值等於0;由於是void*型別,可以隱式轉化為其它型別的指標。

#define null 0 //c++,相對c簡化定義的原因是c++中void*無法自由隱式轉換為其它型別的指標,而字面量0可以隱式轉換為指標型別;儘管它實際上可以被作為整數0使用而不引起編譯問題,但要注意,從設計目的上而言,null應當總是隻作為空指標使用。

char c = null相當於char c = 0,也就是把c初始化為0。0在這裡並不是空指標的意思,而是隱式轉換成的字元'/0'——值為0的char字元。在c/c++的一般實現中,這樣的行為(值為0的數值型別,無論是void*或int,轉換為char的值還是0)是明確的,但這種用法並不恰當。

一如ls的錯誤,ascii及相容字符集中數值0對應的字元為null character(null terminator),應該用nul(沒有在標準庫中定義,語言中char型別用'/0',wchar_t型別用l'/0')而不是null表示。nul的一個重要應用是作為c風格字串的結尾標誌字元。

3樓:匿名使用者

是這樣的,c語言和c++對大小寫是敏感的,也就是說null和null是區別對待的。null代表空地址,null只是一個符號

4樓:匿名使用者

null代表空,而null沒有什麼特別的意義,不是關鍵字

5樓:匿名使用者

沒區別,但是可能有些軟體對大小寫敏感

如何理解c++中的null?

6樓:箬竺

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

使用null 只是一種風格習慣。前處理器把所有的null 都還原回0, 而編譯還是依照上文的描述處理指標上下文的0。特別是, 在函式呼叫的引數裡, null之前(正如在0 之前) 的型別轉換還是需要。

null 只能用作指標常數。

7樓:匿名使用者

delete t 之後。t為野指標,指向一個你不能用的記憶體,並非是空指標(null)。

通常delete t後要跟一句t = null; 防止野指標的錯誤使用

delete只是刪除t指向的內容

8樓:匿名使用者

null是c語言發明的東西,在c裡面null就是0,這樣說很明白吧

在c++裡面null仍然有效,但不再是0,0就是0,null就是null,通常很少使用null了,null表示當前指標沒有指向任何位置,即允許不指向特定位置的指標存在且合法

9樓:匿名使用者

這裡的 null 其實就是空指標,值的話就是0

因為繼承c的緣故,可以用來作為判斷條件,0為假,其他值為真

delete 後 t 並沒有重新賦值,儲存的是原來的記憶體地址,自然不是0,也就不等於 null

10樓:七星瓢殼蟲

null是0的意思,定義一個數等於null,就是讓這個數等於0.

11樓:不眠之侯

允許空值,及時空值也可以通過

12樓:匿名使用者

null表示空指標,用於表示一個無效的指標。

13樓:匿名使用者

if(t)和if(t == null)是不一樣的、if(t)表示t為真的時候執行括號裡的語句。if(t == null)表示t為空的時候才執行、

14樓:鬆鬆土澆澆水

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

15樓:若葉七夜西

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++裡null和0是相等嗎

16樓:宣威朔漠

null是空地址的意思,在使用指標變數時表示一個空地址,null的值在「stdio.h」標頭檔案中被定義為一個值為0的符號常量;即

#define null 0 null的值為00可以表示數字0,也可以表示ascii碼值為0的字元「 」表示字串的長度為0的字串。

千萬別把null與0等同起來。

無論c還是c++,null都是一個implementation-defined的巨集,是實現相關的。null並不就是0,也不就是(void*)0。只不過,大多數編譯器把null定義為0或者(void*)0而已,但並非所有編譯器都這樣做的。

一些常用的**例如if(fpfile = fopen(....) == ....)應該顯式地跟null比較,而不要只寫if(fpfile = fopen(....

)),這是不良**。

17樓:匿名使用者

null通常用來表示指標的 0 值。

18樓:

功能上相等。概念上不等。

c語言中null是什麼意思?

19樓:匿名使用者

是空指標,指

復向地址為

制0的記憶體,在用法上,常用來表bai示不存在,例:duif((fp=fopen("stu","rb"))==null)

exit(0);

解析:如果開啟的這zhi個名為stu的檔案不存在dao,就退出程式;

c語言程式中的null 和'\0'的區別是什麼?

20樓:召走刀文

null一般表示空指標,也就是這個指標沒有指向任何地址。你也可以簡單的理解為指標變數初始化時賦值

'\0'是字串的結束符。例如字串char *p= "abc";實際上,一共有4個字元,分別是'a' 'b' 'c' '\0',所以當用陣列來儲存這個字串時,就必須至少要有4個元素的陣列。

對於gets函式,當gets函式出現異常時返回null,正常處理是返回字串的指標,這是函式自己定義的。當gets函式異常時,跳出迴圈

library[count].title[0] != '\0'是判斷字串是否是空字串,""就是空字串,但是它裡面是包含一個'\0'字元的。

所以,當不輸入字元(書名)時,跳出迴圈。

c/c++中0與null區別是什麼?用delete時,用p=0,還是用p=null好?為

21樓:xx的地平線

null在c語言中是這樣定義的:

#define null ((void *)0)

嗯所以好像原理上是一樣的

在c++中 a=null 和 a=0有什麼區別?

22樓:答題卡

沒有null這個符...

null....一般表示空指標.........

0多數是數字0........

只在if(a)這樣的情況下等價...其餘沒有相同的地方...

23樓:匿名使用者

null 是空 什麼也沒有,實用在指標 物件

0 0值 使用在數值

24樓:匿名使用者

null和null都等於0,暫時還沒發現有區別

25樓:山間悠客

a=null 說的是變數a為空

a=0 說的是變數a為0

C中和Null的區別,C中的null和資料庫中的null的區別?

舉例說,電影院裡 代表一個空位子,有座位,但是沒有人做,null,代表沒有座位.是空字串,null 沒定義 比如有個textbox1,當textbox1中沒有輸入值時 textbox1.text 為真,而 textbox1.text null 為假 區別很大。空字串,也算是一個值。null 未定義 ...

c語言的nul和null

null是一個巨集,它在幾個標準標頭檔案中定義,0是一個整型常量,0 是一個字元常量,而nul是一個字元常量的名字。這幾個術語都不可互換。1 null用於表示什麼也不指向,也就是空指標 void 0 2 0可以被用於任何地方,它是表示各種型別零值的符號並且編譯器會挑出它 3 0 應該只被用於結束字串...

sql表中的空字串與null中的區別何在

對於sql的新手,null值的概念常常會造成混淆,常認為null是與空字串 相同的事。情況並非如此。例如,下述語句是完全不同的 mysql insert into my table phone values null mysql insert into my table phone values 這...