【C++】字元與字元陣列
阿新 • • 發佈:2018-11-21
字元是什麼
共分為4種
字母:a b c ... z
數字:0 1 2 3 ... 9
標點:+ - * / . ; ,等等
控制字元:Tab, Enter等等
用ascii碼來表示以上字元,例如65 <=> 'A',97 <=> 'a',48 <=> '0',49 <=> '1',43 <=> '+',32 <=> ' '(這裡是空格),9 <=> '\t'等等。
#include "stdio.h" int main() { printf("%c %c \n", 'A', 65); printf("%c %c %c", '1', ' ', '2'); return 0; } /* //run out: A A 1 2 */
字元陣列
字元陣列最後是有一個結束符0或者'\0',所以char str[6]的陣列長度為6,但只能儲存5個字元。
#include "stdio.h" int main() { //初始化第一種方式 char str[6] = {'b', 'e', '1', '2', 'o', '\0'}; //第二種方式 char str1[5] = "hell"; //第三種方式 char str2[] = "aa"; //char str3[6] = {'b', 'e', '1', '2', 'o', 'B'};不會報錯,但是由於沒有結束符,printf會一直讀取記憶體,然後直到遇到結束符0為止。這時這段程式碼就不可預測,所以不能這樣使用。 printf("%c \n", str[4]); printf("%s \n", str1); printf("%s", str2); return 0; } /* //run out; o hell aa */
注意事項:
1)陣列足夠大,有效字串最大長度=陣列長度-1;
2)不以0結束的字串,不是正常的字串;
3)0之後的字元不會被打印出來。
不妨看個例子鞏固下:
#include "stdio.h" int main() { char str[6] = {'b', 'e', 0, '2', 'o', '\0'}; char str1[5] = "hell"; printf("%c \n", str[4]); printf("%s \n", str1); printf("%s", str); return 0; } /* //run out: o hell be */
從結果可以看出,列印單個字元str[4]時,結果依舊為o,這表明str所有都被初始化了。而使用prinft在列印整個str時,只打印了be,這是因為printf遇0就停了。