0 字串的結束標誌

2021-09-28 17:39:20 字數 1308 閱讀 9999

'\0'就是 字串結束標誌。

%s ,列印log ,需要新增\0識別字串的結束。

'\0'就是8位的00000000,因為字元型別中並沒有對應的這個字元,所以這麼寫。在數值型別裡就代表數字0。

數值型別儲存時,最高位決定正負號,其他位都為0可不就是0了麼?

'\0'是轉譯字元,意思是告訴程式,這不是字元0,我要的是數字0的2進製直接放進來,因為acsii碼的0可不是00000000

0是整型,'\0'、'0'是字元char型,在記憶體中都用乙個位元組表示,其實都是int型,對應的整型值分別是:0、0和48

原來,在c語言中沒有專門的字串變數,通常用乙個字元陣列來存放乙個字串。字串總是以'\0'作為串的結束符。因此當把乙個字串存入乙個陣列時,也把結束符 '\0'存入陣列,並以此作為該字串是否結束的標誌。有了'\0'標誌後,就不必再用字元陣列的長度來判斷字串的長度了。 

'\0'就是 字串結束標誌。

比如說,把乙個字串賦值給陣列:

u8 str1=;

實際上陣列str1在記憶體中的實際存放情況為: 

c x j r . 2 1 i c . o r g '\0' 

這後面的'\0'是由c編譯系統自動加上的。所以在用字串賦初值時一般無須指定陣列的長度, 而由系統自行處理。 

把字元陣列str1中的字串拷貝到字元陣列str2中。串結束標誌'\0'也一同拷貝。 

但是……也有一些例外情況發生。

比如,當陣列長度不夠。假設我們指定了陣列長度,如:

u8 str1[13]=;

由於字元組str1的長度為13,所以後面的資訊會丟失,即'\0'丟失。

另外,如果在給陣列賦值時,把每個字元單獨用引號括起來。也會丟失'\0'。如:

u8 str1=;

如果希望陣列以'\0'結束,則要麼寫成:

u8 str1=;

要麼寫成(人工新增'\0'):

u8 str1=;

要麼寫成(故意給陣列預留乙個空位):

u8 str1[14]=;

--------------------- 

#include

int main()

;printf("%d\n",sizeof(u) / sizeof(*u));

char v = "hello";

printf("%d\n",sizeof(v) / sizeof(*v));

char c = '\0';

char d = '0';

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

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

}輸出:

C 字串和字串結束標誌

用乙個字元陣列可以存放乙個字串中的字元 如 char str 12 為了測定字串的實際長度,c 規定了乙個 字串結束標誌 以字元 0 代表 在上面的陣列中,第11個字元為 0 就表明字串的有效字元為其前面的10個字元 也就是說,遇到字元 0 就表示字串到此結束,由它前面的字元組成字串 對乙個字串常量...

字串結束標誌 字串 替換空格

遇到對字串或者陣列做填充或刪除的操作時,都要想想從後向前操作怎麼樣。請實現乙個函式,把字串 s 中的每個空格替換成 20 如果想把這道題目做到極致,就不要只用額外的輔助空間了!首先擴充陣列到每個空格替換成 20 之後的大小。然後從後向前替換空格,也就是雙指標法,過程如下 i指向新長度的末尾,j指向舊...

C語言中字串結束符 0

本質 0 就是8位的00000000,因為字元型別中並沒有對應的這個字元,所以這麼寫。0 就是 字串結束標誌。0 是轉譯字元,意思是告訴編譯器,這不是字元0,而是空字元。空字元 0對應的二進位制為00000000,而數字0為00110000 原來,在c語言中沒有專門的字串變數,通常用乙個字元陣列來存...