C語言中null大寫還是小寫,C語言中當宣告指標為空時為什麼用大寫NULL而不用小寫null

時間 2021-09-11 22:30:20

1樓:匿名使用者

null,

大寫,有這樣的一個定義:

#define null 0

你能看到嗎?

看vc裡邊應該能看到

如果沒有小寫的null,你也可以這樣:

#define null 0

這樣就可以了,呵呵。

2樓:匿名使用者

這個要看你的開發環境中有沒有定義,定義的是哪一個。以前的vc6.0中有

#define null 0

c語言中:

#define null (void*)0也就是說null只是一個巨集定義,是大寫的,小寫沒有定義。並且null值分別是0和值為0的空指標。

3樓:銷

用大寫,另外null其實就是0,你可以直接寫0,方便一點

4樓:匿名使用者

這還用問!肯定是大寫,雖然系統沒規定,但人們形成一種共識,大寫代表常量,小寫代表變數,null的ascii碼是零

5樓:鵲鵲不才

大小寫都可以~~~~~~~~~~

在c語言中,是區分大小,例如:a和a是兩個不同的變數.為了便於區分,對於定義常變數,一般都用大寫,定義普通變數,一般都用小寫.所以,不管是定義常變數,還是定義普通變數,大小寫都可以.

6樓:匿名使用者

c中沒有null,只有巨集null

#define null 0

7樓:

c語言一般情況下 對大小寫沒有嚴格要求 你自己試試看小寫行不?大寫肯定行

c語言中當宣告指標為空時為什麼用大寫null而不用小寫null?

8樓:匿名使用者

因為null是在一個巨集,這個巨集通常在stdlib.h等標頭檔案中,如下所示:

#define null 0

9樓:匿名使用者

1.c中大小寫敏感

2.c語言規範中,常量定義建議用大寫

so,,,不用null,而用null

c語言中null是什麼意思

10樓:

在c語言中,

null和0的值都是一樣的,但是為了目的和用途及容易識別的原因,null用於指標和物件,0用於數值

對於字串的結尾,使用'\0',它的值也是0,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值

在不同的系統中,

null並非總是和0等同,null僅僅代表空值,也就是指向一個不被使用的地址,在大多數系統中,都將0作為不被使用的地址,所以就有了類似這樣的定義

#define null 0

但並非總是如此,也有些系統不將0地址作為null,而是用其他的地址,所以說,千萬別將null和0等價起來,特別是在一些跨平臺的**中,這更是將給你帶來災難。

11樓:匿名使用者

null 就是一個特殊的指標值, 其實本質是一個巨集#define null (void *)0也就是0值, 強制轉成了指標。

用來表示一個指標非法。 所以在初始化的時候經常用null來初始化。

由於是非法指標, 所以對這個指標取值(*操作)會導致程式崩潰。 必須要先指向一個有效空間才可以。

12樓:匿名使用者

c語言null定義,定義如下:

#undef null

#if defined(__cplusplus)#define null 0

#else

#define null ((void *)0)#endif

所以我覺得,如果一個指標被賦予null,應該就相當於這個指標執行了0x0000這個邏輯地址,但是c語言中0x0000這個邏輯地址使用者是不能使用的(有些人說是因為0x0000沒有對映到實體地址,也有人說是因為0x0000對映到的地址是作業系統用於判斷野指標的,我也不太懂,總之就是使用者不能使用啦),所以當你試圖取一個指向了null的指標的內容時,就會提示段錯誤,聽著有點繞,看程式:

int *node=null;

int a=0;

a=*node;

printf("%d\n",a);

由於node執行的是null,也就是邏輯地址0x0000,而這個地址用於是不能訪問的,所以編譯器提示段錯誤。

13樓:樂跑小子

在標頭檔案 中 定義的一個常量 null=0;

用於指將指標 懸空(不指向任何位置)樓上的指向0記憶體不對的.

int *p=null;

null是個好東西,給一出生的指標一個安分的家

null不是被定義為0,就是被定義為(void *)0,這兩種值幾乎是相同的。當程式中需要一個指標時(儘管編譯程式並不是總能指示什麼時候需要一個指標),一個純粹的零或者一個void指標都能自動被轉換成所需的任何型別的指標。

null總是等於0嗎?

對這個問題的回答與“等於”所指的意思有關。如果是指“與。比較的結果為相等”,例如:

if(/* ... */)

else

/* ... */

if(p==0)

那麼null確實總是等於0,這也就是空指標定義的本質所在。

如果是指“其儲存方式和整型值。相同”,那麼答案是“不”。null並不必須被存為一個整型值0,儘管這是null最常見的儲存方式。在有些計算機中,null會被存成另外一些形式。

如果想知道null是否被存為一個整型值0,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將一個空指標強制轉換成整型別,那麼=所看到的很可能就是一個非零值)。

14樓:育知同創教育

null,本意是"空的;元素只有零的"意思。計算機中通常表示空值,無結果,或是空集合。

null指標是一個無型別指標,並且值為0。一個指標,擁有2個屬性--地址值和指標型別。兩者的作用是:

1,地址值標識變數的首地址(32位系統下指標的地址值佔4位元組);2,指標型別告訴編譯器,應該怎樣進行接下來的資料訪問(int型陣列和float型陣列是不同的;陣列訪問與結構體訪問也是不同的;等等)。

15樓:66666順心

空的意思,其實不太好說明白!如果分配記憶體分配失敗如:

#include

#include

int main()

如果分配記憶體分配失敗,malloc函式就會返回一個null給p

16樓:陽光沒有眼睛

可以的null別定義為

#define null ((void *)0)

'\0'是字元,ascii是0

17樓:匿名使用者

c語言中null的意思就是空格的意思,用到的很多

18樓:高金山

#define null ((void*)0)

其值是0,但意義是空指標

'\0'的值也是0,但意義是字串結束符

19樓:匿名使用者

是空指標,指向地址為0的記憶體,在用法上,常用來表示不存在,例:if((fp=fopen("stu","rb"))==null)exit(0);

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

20樓:匿名使用者

null的定義是:

#define null (*(void*)0)簡而言之就是一個打包過的0.

while後面應該填寫

'\0' != *p

因為按照習慣,*p是一個字元變數.

但是你填

null != *p

或者就是

*p都可以.

21樓:匿名使用者

反正null就是0,一般用來形容指標是空的.

至於你說的null == '\0' , 只是因為'\0'也是數值0而已

22樓:匿名使用者

null, 大寫,有這樣一個定義: #define null 0 你能看到? 看vc裡邊應該能看到如果沒有小寫null,你也可以這樣:

#define null 0 這樣就可以,呵呵。

c/c++中,null和null的區別是什麼?

23樓:老夏的小可愛

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中的未定義行為,並且允許符合要求的實現假定任何被解除引用的指標不為空。

參考資料

24樓: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風格字串的結尾標誌字元。

25樓:匿名使用者

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

26樓:匿名使用者

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

27樓:匿名使用者

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

c語言中的null

28樓:樂跑小子

在標頭檔案 中 定義的一個常量 null=0;

用於指將指標 懸空(不指向任何位置)樓上的指向0記憶體不對的.

int *p=null;

null是個好東西,給一出生的指標一個安分的家

null不是被定義為0,就是被定義為(void *)0,這兩種值幾乎是相同的。當程式中需要一個指標時(儘管編譯程式並不是總能指示什麼時候需要一個指標),一個純粹的零或者一個void指標都能自動被轉換成所需的任何型別的指標。

null總是等於0嗎?

對這個問題的回答與“等於”所指的意思有關。如果是指“與。比較的結果為相等”,例如:

if(/* ... */)

else

/* ... */

if(p==0)

那麼null確實總是等於0,這也就是空指標定義的本質所在。

如果是指“其儲存方式和整型值。相同”,那麼答案是“不”。null並不必須被存為一個整型值0,儘管這是null最常見的儲存方式。在有些計算機中,null會被存成另外一些形式。

如果想知道null是否被存為一個整型值0,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將一個空指標強制轉換成整型別,那麼=所看到的很可能就是一個非零值)。

請問c語言中「0」與NULL的區別

完全不同.null是一個巨集定義,其定義形式為 void 0,也就是說,型別是一個void 指標,值為0.空格 是一個常量字元,型別為char,值為0x20即32.0是字串後面自動新增的字元,佔一個位置。而null作為c語言中的保留字,使用來對迴圈等進行判斷的。例如if null end明白了麼,如...

c語言中return的作用,C語言中return的作用?

作用1 表示返回,這個程式可以結束了,可以不帶引數,如果你的成員執行到這裡,你就不往後執行了,可以加一個return語句,就不會再執行了 作用2 返回指定型別的值,在定義函式的時候不是有 int af int 這裡是返回值,return 後面接的就是這個返回值,這個函式執行後就可以給別的變數賦值了,...

c語言中switch結構的使用,C語言中switch結構的使用

秋風依舊好 因為case後面不能接範圍,也就是說case後面是一個確實固定的常量.用下面的方法比較好,include int main 你可以先把範圍用字母或常量代替 再用switch語句 資料 include void main else printf score scanf d s system...