用來存放字符的數組稱爲字符數組,例如:數組
字符數組其實是一系列字符的集合,也就是字符串(String)。在C語言中,沒有專門的字符串變量,沒有string類型,一般就用一個字符數組來存放一個字符串。
C語言規定,能夠將字符串直接賦值給字符數組,例如:spa
數組第0個元素爲 'c',第1個元素爲 '.',第2個元素爲 'b',後面的元素以此類推。也能夠不指定數組長度,例如:.net
在C語言中,字符串老是以'\0'
做爲串的結束符。上面的兩個字符串,編譯器已經在末尾自動添加了'\0'
。code
'\0'
是ASCII碼錶中的第0個字符,用NUL
表示,稱爲空字符。該字符既不能顯示,也不是控制字符,輸出該字符不會有任何效果,它在C語言中僅做爲字符串的結束標誌。
puts 和 printf 在輸出字符串時會逐個掃描字符,直到碰見 '\0' 才結束輸出。請看下面的例子:blog
運行結果:
str1: http://c.biancheng.net
str2: C Language
str3: You are a good
str1 和 str2 很好理解,編譯器會在字符串最後自動添加 '\0',而且數組足夠大,因此會輸出整個字符串。對於 str3,因爲字符串中間存在 '\0',printf() 掃描到這裏就認爲字符串結束了,因此不會輸出後面的內容。
須要注意的是,用字符串給字符數組賦值時因爲要添加結束符 '\0',數組的長度要比字符串的長度(字符串長度不包括 '\0')大1。例如:ip
char str[] = "C program";
該數組在內存中的實際存放狀況爲:
字符串長度爲 9,數組長度爲 10。內存