C語言 字符數(shù)組的整體初始化
字符串設(shè)置了結(jié)束標(biāo)志以后,對字符數(shù)組的初始化,就可以用字符串常量來初始化字符數(shù)組。
例如:
char strl[15] = {"Hello boy"};
或
char strl[20] ="Hello boy";
等價于:
char strl[20] ={'H','e','l','1','0',' ','b','o','y','\0'};
很明顯,以字符串形式初始化更簡潔一些。
此時數(shù)組stri在內(nèi)存中的存儲形式如圖所示。
H | e | i | i | 0 | b | o | y | \0 | \0 | \0 | \0 | \0 | \0 | \0 |
從上圖可看出,str1[9]中存儲的是字符'\0',因為這是一個字符串結(jié)束標(biāo)記,所以C語言所有的字符串處理函數(shù)完全忽略'\0'之后數(shù)組空間中存放的內(nèi)容。
從上圖可看出,字符串結(jié)束標(biāo)志也要在字符數(shù)組中占用一個元素的存儲空間,因此在聲明字符數(shù)組長度時,至少為字符串所需長度加1。
字符串與字符數(shù)組的區(qū)別就在于是否存在字符串結(jié)束標(biāo)記'\0',例如:
char s1[]="hello";
char s2[5]={'h','e','l','l','o'};
S1和S2中存儲的都是相同的內(nèi)存。但對于S1,系統(tǒng)會自動在末尾增加一個'\0',所以在內(nèi)存中所占的空間為6個字節(jié)。而S2所占空間就是它定義時的長度,5個字節(jié)。
字符數(shù)組使用字符串初始化時也可省略“元素個數(shù)”。例如:
char strl[]="Hello boy";
這樣會根據(jù)初始化字符串的個數(shù)確定str1在內(nèi)存中所占的空間,因為'\0'也占1個字節(jié),所以str1在內(nèi)存中所占空間為10個字節(jié)。
點擊加載更多評論>>