C語言中字串結束符’\0′的討論

來源:互聯網
上載者:User

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

數實值型別儲存時,最高位決定加號或減號,其他位都為0可不就是0了嗎?

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

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

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

比如說,把一個字串賦值給數組:
u8 str1[]={"cxjr.21ic.org"};
實際上數組str1在記憶體中的實際存放情況為: 
c x j r . 2 1 i c . o r g '\0' 
這後面的'\0'是由C編譯系統自動加上的。所以在用字串賦初值時一般無須指定數組的長度, 而由系統自行處理。 
把字元數組str1中的字串拷貝到字元數組str2中。串結束標誌'\0'也一同拷貝。 

但是……也有一些例外情況發生。
比如,當數組長度不夠。假設我們指定了數組長度,如:
u8 str1[13]={"cxjr.21ic.org"};
由於字元組str1的長度為13,所以後面的資訊會丟失,即'\0'丟失。

另外,如果在給數組賦值時,把每個字元單獨用引號括起來。也會丟失'\0'。如:
u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};
如果希望數組以'\0'結束,則要麼寫成:
u8 str1[]={"cxjr.21ic.org"};
要麼寫成(人工添加'\0'):
u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'};
要麼寫成(故意給數組預留一個空位):
u8 str1[14]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.