C語言空字元NULL和字元0的區別

2021-04-12 07:18:52 字數 4254 閱讀 5231

1樓:匿名使用者

ascii碼聽過吧,字bai符和字串的數字就du是ascii,它們和我們的zhi十dao進製數是有區別的如專:字元'0', '1', '2'……換屬

成十進位製數是48, 49, 50,這就是' ' 表示的字元和沒有的區別哦而字串就是由字元組成,但有乙個區別:字串「0123」,它可分割為'0' '1' '2' '3' '\0' <-----多了乙個尾巴'\0'------對應的十進位制值0(和'0'要區別開而null的值就是'\0',即十進位制的0,而字元'0'的十進位制值是48(要分別開來哦) --更深一層的就是null和'\0'(即0)只是值相同,意義上是不同的哦(這不懂也沒事,有彙編知識可看下)c在編譯的時候,資料段和堆疊段會被生成乙個dgroup的段組(即在記憶體中是相連的,並且是共用同乙個段位址),而這dgroup中有一段就是null(0,表示是dgroup的開始那一小段,後面才是資料段這些)段了,它由編譯器生成的,記錄了編譯器的相息。所以有相關的保護,不允許對它的內容修改<----這就是為何null值的指標是安全的,對null值的指標賦值會報錯

2樓:匿名使用者

null是一來個巨集。

#ifndef null

#ifdef __cplusplus//這個自是指示是用baic++來編譯程式du

#define null 0 //用null這個字元代表zhi0

#else

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

#endif

一般null==0

null!dao=『0』

當然'0'==48

3樓:匿名使用者

null與0的區別:抄

還是讓我們看一下windef.h中null的定義:

#ifndef null

#ifdef __cplusplus//這個是指示是用c++來編譯程式

#define null 0 //用null這個字元代表0

#else

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

#endif

所以說:它們沒有區別,只不過在c裡面會做乙個強制型別轉換。

4樓:匿名使用者

null的ascii碼值是0'0'的ascii碼值是48(也許沒能理解樓主的意思)

5樓:匿名使用者

null的內碼是0'0'的內碼是48

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

6樓:召走刀文

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

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

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

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

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

c語言的字串,\0'null,有什麼區別

7樓:匿名使用者

\0是字串結束符,暫用乙個位元組,放在記憶體裡其實就是0x00。

null是空位址,不佔用任何位元組,是用來給指標賦值的。其實就是0位址,這個位址在c語言裡面是不允許訪問的,訪問會出異常。

比如int * p = null,int *q,q的值是乙個隨機值,p的值就是0x0。

c語言中:字元''和字元 '\0'和null是等價的麼

8樓:匿名使用者

單引號裡兩個裡面空的,在c語言中不是合法表示,要表示空字元就是用'\0'。

兩個雙引號中才可以是空的,表示空字串。

null如果表示字元時,就是上面的空字元,也就是對應ascii碼0。

null還可以表示空指標,也就是沒有進行位址初始化的指標。但實際在計算機表示中指向位址0的指標就表示沒有初始化,所以null也是指向位址0的指標。

9樓:匿名使用者

char c[1];

c[0] = '\0';與 char d[1] = "";應該是乙個意思

但是跟null是倆概念,null等於是沒有指向記憶體的指標

下面這段c語言程式中,null 和'\0'的區別是什麼?

10樓:召走刀文

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

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

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

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

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

11樓:匿名使用者

gets(library[count].title) != null這裡是用來判斷指標是否為空

library[count].title[0] != '\0'這裡判斷裡面的資料是否為字串結束標記

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

12樓:百度使用者

\0是字串後面自動新增的字元,佔乙個位置。

而null作為c語言中的保留字,使用來對迴圈等進行判斷的。例如if ***=null

end明白了麼,如果有疑問你可以給我發郵件,[email protected] 我盡量解答。

13樓:超超

對於宣告以後未賦值的數值型別變數則它們的預設值為0

null關鍵字被用來作為variant子型別,它說明變數不包含有效資料。null是將null值顯式地賦值給一變數的結果,也可能是包含null的表示式之間的任何運算的結果謝謝

14樓:百度使用者

\0 \為轉義符,後跟數字為八進位制,\0就是表示數字0null在標頭檔案的定義也是0,沒區別。

它們指的都是ascii字符集中的第乙個字元,標誌「空」的乙個狀態字。

while(*pf)

while(*pf!=0)

效果也一樣,都是判斷指標為空(假)做為終止迴圈的條件。

指標這種用法一般是在呼叫函式中,會傳遞乙個指標,然後返回已指向目標的指標,使用者通過該指標就可以操縱所需功能了。如果調函式失敗,返回的就是空指標。

這可指導使用者,對失敗情況做另外的處理。

15樓:橡皮

一般null實際是 (void *)0,經常用於指標初始化,代表不指向任何有效儲存區。

'\0'是乙個字元,代表空的字元,如此而已,呵呵。

補充點,注意區分null和nul

16樓:

\0表示字串的結束符

null表示空常用於資料結構的數....->..=null

c語言中 \0 空字元(null) 000 是不是就代表空格?

17樓:匿名使用者

絕對不是bai.

這些東西你要搞的du非常清楚才行

zhi.

否則絕對學不好

daoc語言的.

'\0'表示字元

串結尾版,是乙個轉移字元,實際上他的權數值是0,所以在出現'\0'的地方你都可以用0代替.

空格的ascii是0x20. 這點你不用懷疑,我做了5年的c了.

18樓:匿名使用者

不是!\0是字串結束符

null是乙個0或者 -1因系統而已

000就是乙個整形

19樓:

當然不是啦!

\0是字串結束標誌

是檢驗乙個字串是否結束

空格好像用ascii碼\0x20代表~

c語言中字元和字元和null是等價的麼

單引號裡兩個裡面空的,在c語言中不是合法表示,要表示空字元就是用 0 兩個雙引號中才可以是空的,表示空字串。null如果表示字元時,就是上面的空字元,也就是對應ascii碼0。null還可以表示空指標,也就是沒有進行位址初始化的指標。但實際在計算機表示中指向位址0的指標就表示沒有初始化,所以null...

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

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

用C語言求解 刪除字串的字元,用C語言求解 刪除乙個字串的乙個字元

int n maxstring 字串最大長度char n strsrc 原始串char n 1 strdes 目標串char delchar c int i 0 int j 0 for i 0 i n i 上面幾條語句就實現了你的要求。要輸出的話那簡單。int i 0 for i 0 i n 1 i...