位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 字符數(shù)組的整體初始化

提問人:劉團(tuán)圓發(fā)布時間:2020-11-30

字符串設(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é)。


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部