'\0'是轉義字元,意思是告訴程式,這不是數字0。'\0'和0兩者基本上可以通用,例如: string[i] != '\0'和string[i] != 0是一樣的。不過'\0'的型別是char型,而0是int型別,所以在大多數計算機上,sizeof(0) = 4而sizeof('\0') = 1,這在特殊情況下不可通用。另外擴充套件一下,'\0'與'0'也是不同的,他們都是字元,但是他們的ascii碼是不同的:'\0' ascii碼值為0,'0' 也可以寫成'\0x30' ascii碼值為48。
在c語言中沒有專門的字串變數,通常用乙個字元陣列來存放乙個字串。字串總是 以'\0'作為串的結束符。因此當把乙個字串存入乙個陣列時,也把結束符 '\0'存入陣列,並以此作為該字串是否結束的標誌。有了'\0'標誌後, 就不必再用字元陣列的長度來判斷字串的長度了。
'\0'就是 字串結束標誌。比如說,把乙個字串賦值給陣列:char str1 = 。實際上陣列str1在記憶體中的實際存放情況為: 'w' 'e' 'l' 'c' 'o' 'm' 'e' '!' '\0'。這後面的'\0'是由c編譯系統自動加上的。所以在用字串賦初值時一般無須指定陣列的長度, 而由系統自行處理。 把字元陣列str1中的字串拷貝到字元陣列str2中。串結束標誌'\0'也一同拷貝。
但是……也有一些例外情況發生。比如,假設我們指定了陣列長度但陣列長度不夠。
如:char str1[8] = 。由於字元組str1的長度為8,所以後面的資訊會丟失,即'\0'丟失。
另外,如果在給陣列賦值時,把每個字元單獨用引號括起來,也會丟失'\0'。
例如:char str1 = ;
如果希望陣列以'\0'結束,則要麼寫成:char str1 = ;
要麼寫成(人工新增'\0'):char str1 = ;
要麼寫成(故意給陣列預留乙個空位):char str1[9] = ;
最後,有興趣的童鞋可以思考一下'\0'與null的區別,你會發現c語言中我們還有很多細節沒有注意到。
C的字串結尾 0 長度問題
字元陣列後面缺省會加乙個 0 當陣列長度不夠的時候,後面的資訊會丟失,假設我們指定了陣列長度13,如 char str1 13 char str2 執行結果如下 字元陣列str1的長度為13,但是缺少了 0 strlen在計算陣列長度的時候是遇到 0 時計算就停止,如果不在字元陣列後面加上 0 那麼...
0 字串的結束標誌
0 就是 字串結束標誌。s 列印log 需要新增 0識別字串的結束。0 就是8位的00000000,因為字元型別中並沒有對應的這個字元,所以這麼寫。在數值型別裡就代表數字0。數值型別儲存時,最高位決定正負號,其他位都為0可不就是0了麼?0 是轉譯字元,意思是告訴程式,這不是字元0,我要的是數字0的2...
C 字串和字串結束標誌
用乙個字元陣列可以存放乙個字串中的字元 如 char str 12 為了測定字串的實際長度,c 規定了乙個 字串結束標誌 以字元 0 代表 在上面的陣列中,第11個字元為 0 就表明字串的有效字元為其前面的10個字元 也就是說,遇到字元 0 就表示字串到此結束,由它前面的字元組成字串 對乙個字串常量...