C語言NULL的使用問題,C語言中的NULL

2021-03-03 21:37:02 字數 5746 閱讀 4377

1樓:匿名使用者

#include

int main()

}看我這段**,結果為螢幕上列印出了「null很正常」,沒錯啊vc6.0的結果

敢問樓主的編譯器是什麼?

2樓:匿名使用者

#define null 0

我是戴紅領巾的活雷鋒

3樓:匿名使用者

你程式拿來看看,你這不知道什麼意思

4樓:匿名使用者

你有包含標頭檔案嘛?

#include

c語言中的null

5樓:樂跑小子

在標頭檔案 中 定義的一個常量 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,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將一個空指標強制轉換成整型別,那麼=所看到的很可能就是一個非零值)。

6樓:匿名使用者

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,而這個地址用於是不能訪問的,所以編譯器提示段錯誤。

7樓:d小太陽

在c語言中,null和0的值都是一樣的,但是為了目的和用途及容易識別的原因,null用於指標和物件,0用於數值。對於字串的結尾,使用'\0',它的值也是0,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值。

拓展資料:

關於null的使用

程式設計工作中有一類比較容易犯的錯誤--指標地址未進行正確的更新賦值就加以使用,這往往會造成很嚴重的後果(對記憶體區進行錯誤的塗抹)。所以一個良好的習慣是,當一個指標的工作稍事休息,先把它賦值為null,待到再度使用時,重新對其賦值以及進行指標型別轉化。

前面說到"null指標無法再進行任何資料訪問",其實是視編譯器功能而定的。0位置指向的是程式起始,對於不同的編譯器,null指標的操作結果是不同的:有些是不準讀寫,有些是隻讀,甚至讀寫都允許。

編譯器是人定的。

8樓:高金山

#define null ((void*)0)

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

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

9樓:陽光沒有眼睛

可以的null別定義為

#define null ((void *)0)

'\0'是字元,ascii是0

10樓:匿名使用者

null的定義是:

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

while後面應該填寫

'\0' != *p

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

但是你填

null != *p

或者就是

*p都可以.

11樓:匿名使用者

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

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

12樓:匿名使用者

指標可以賦值null,但數值只能賦值為0.*p是表示指標p指向記憶體塊中的值。所以不能賦值給null。null不相當於0.

'\0'就更不是了。它是表示什麼也沒有。例如指標被賦值了null表示這個指標沒有指向任何地址。在c++中指標可以賦值為0,表示為null。而0表示個數值在c中。

這個**while() 這裡好像有錯誤。

13樓:匿名使用者

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

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

14樓:匿名使用者

tv在 6000008i。,,個

+涼皮。了

15樓:唐甄甄甄

應該是p!=null

c語言中null有什麼作用?具體用法是什麼?

16樓:小惱

給x變數的空間表示為空,表示沒有儲存資料。如果x = 0;表示x的變數中儲存了一個0元素的值。

17樓:百度使用者

null 其實就是 #define null 0 也就是說它就是0 不過是寫**的時候為指標什麼的賦值或判斷指標是否為空時看起來直觀一些。

c語言中null是什麼意思

18樓:

在c語言中,

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

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

在不同的系統中,

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

#define null 0

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

19樓:匿名使用者

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

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

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

20樓:匿名使用者

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,而這個地址用於是不能訪問的,所以編譯器提示段錯誤。

21樓:樂跑小子

在標頭檔案 中 定義的一個常量 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,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將一個空指標強制轉換成整型別,那麼=所看到的很可能就是一個非零值)。

22樓:匿名使用者

c中沒有對null預定義

,所以null和'\0'區別就大了:null只是個合法的使用者識別符號,而'\0'是預定義為0的字元常量。如果是null和'\0',那它們沒有區別,都被預定義為值為0的常量,所以混用它們不會產生任何問題,甚至把用它們的地方都改成0也無妨。

一般情況下,null用於使指標無效或判斷指標是否無效,'\0'則用於字串結束或判斷字串是否結束。這樣規範書寫,**的可讀性就大為提高,沒有發現有什麼別的意義。

23樓:育知同創教育

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

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

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

24樓:66666順心

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

#include

#include

int main()

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

25樓:陽光沒有眼睛

可以的null別定義為

#define null ((void *)0)

'\0'是字元,ascii是0

26樓:匿名使用者

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

C語言問題C語言問題,C語言問題C語言問題

include include int main b k p b k 0 puts b return 0 c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock print...

C語言問題,C語言問題C語言問題

這題考的是自動型別轉換,由編譯系統自動完成,轉換是 向上 靠的 舉個例子 include stdio.h void main 你編譯一下就會有警告 conversion from double to float possible loss of data 也就是說系統預設轉化了a,b的資料型別為do...

c語言問題,C語言問題

1 c2 a 3 d4 a 5 d6 b 7 a8 a9 d c語言問題 include define n 30 typedef struct student student r n int main void num 1 for i 0 ir max score max j if max i if...