在 C 語言中,字元常量是由一對單撇號括起來的單個字元,如 "a"、"D"、"?"、"$"…除了字元常量外還有字串常量,所謂的字串常量,顧名思義就是多個“字元”串在一起。與字元常量有所不同,字串常量是用“雙撇號”括起來的多個字元的序列,比如:"How are you"、"I love you"、"你好"。當然,只要是“雙撇號”括起來的,就算只有一個字元也叫字串,如"a"。字元常量 "a"與字串常量"a"是不同的。一個字元在記憶體中只佔一位元組,而字串本質上是多個字元組成的字元陣列。C語言規定,在每一個字串常量的結尾,系統都會自動加一個字元"\0"作為該字串的“結束標誌符”,系統據此判斷字串是否結束。這裡要特別強調一點:"\0"是系統自動加上的,不是人為新增的。"\0" 是 ASCII 碼為 0 的字元,它不會引起任何控制動作,也不是一個可以顯示的字元。比如字串常量"CHINA",表面上看它只有 5 個字元,但實際上它在記憶體中佔 6 位元組,"C"、"H"、"I"、"N"、"A"、"\0" 各佔一位元組。如果要輸出該字串,"\0" 不會輸出。也就是說,雖然實際上總共有 6 個字元,"\0" 也包括在其中,但輸出時 "\0" 不會輸出。系統從第一個字元 "C" 開始逐個輸出字元,直到遇到 "\0",則表示該字串結束,停止輸出。也就是說,在字串常量中,如果“雙撇號”中能看見的字元有 n 個,那麼該字串在記憶體中所佔的記憶體空間為 n+1 位元組。
在 C 語言中,字元常量是由一對單撇號括起來的單個字元,如 "a"、"D"、"?"、"$"…除了字元常量外還有字串常量,所謂的字串常量,顧名思義就是多個“字元”串在一起。與字元常量有所不同,字串常量是用“雙撇號”括起來的多個字元的序列,比如:"How are you"、"I love you"、"你好"。當然,只要是“雙撇號”括起來的,就算只有一個字元也叫字串,如"a"。字元常量 "a"與字串常量"a"是不同的。一個字元在記憶體中只佔一位元組,而字串本質上是多個字元組成的字元陣列。C語言規定,在每一個字串常量的結尾,系統都會自動加一個字元"\0"作為該字串的“結束標誌符”,系統據此判斷字串是否結束。這裡要特別強調一點:"\0"是系統自動加上的,不是人為新增的。"\0" 是 ASCII 碼為 0 的字元,它不會引起任何控制動作,也不是一個可以顯示的字元。比如字串常量"CHINA",表面上看它只有 5 個字元,但實際上它在記憶體中佔 6 位元組,"C"、"H"、"I"、"N"、"A"、"\0" 各佔一位元組。如果要輸出該字串,"\0" 不會輸出。也就是說,雖然實際上總共有 6 個字元,"\0" 也包括在其中,但輸出時 "\0" 不會輸出。系統從第一個字元 "C" 開始逐個輸出字元,直到遇到 "\0",則表示該字串結束,停止輸出。也就是說,在字串常量中,如果“雙撇號”中能看見的字元有 n 個,那麼該字串在記憶體中所佔的記憶體空間為 n+1 位元組。