字符數組的定義和初始化
字符數組的定義和一般的數組一樣,例如:
char s[10];
char s[3][10];
char s[10]={‘H’,’e’,’l’,’l’,’o’,’‘,’C’,’+’,’+’,’!’};/*定義時完全初始化*/
char s[]={‘H’,’e’,’l’,’l’,’o’,’‘,’C’,’+’,’+’,’!’};/*定義時省略長度的完全初始化*/
char s[10]={‘H’,’e’,’l’,’l’,’o’};/*不完全初始化,未賦值的元素系統自動賦予0值*/
char s[11]={“Hello C++!”); /*字符串形式的初始化*/
char s[11]=”HelloC++!”; /*省略花括號的字符串形式的初始化*/
用雙引號進行的字符串形式初始化和普通字符數組不同的是,在串的尾部自動添加了一個結束符’\0’,其ASCII值為0。數組的長度為ll,如果為10,’\0’將不能存儲,字符串將不能正確初始化,其結果將只是一個普通的字符數組。
以下形式也可以初始化一個字符串:
char s[11]={‘H’,’e’,’l’,’l’,’o’,’‘,’C’,’+’,’+’,’!’,’\0’};
有了結束符’\0’,在編譯處理和對字符串操作的時候,可以以此作為串是否結束的標志,定義字符串的時候需要足夠的空間能存儲最后一個結束符,像以下定義則是錯誤的:
char s[10]=”Hello C++!”;
字符串的長度是不包含’\0’在內的有效字符個數,如果字符串包含多個’\0’,以最前面的為有效結束符。例如,假設有字符串:
char s[11]={‘H’,’e’,’l’,’l’,’o’,’\0‘,’C’,’+’,’+’,’!’,’\0’};
則字符串的有效長度為5,字符數組的長度仍然為11。
因此用字符串的方式對數組作初始化賦值,\0'是由C編譯系統自動加上的。由于采用了’\0'標志,所以在用字符串賦初值時一般無須指定數組的長度,而由系統自行處理。
例如:
char s[ ]=”Hello C++!”;
字符數組和普通數組一樣,也是通過下標引用。