字元陣列是指用來存放字元資料的陣列。其定義的一般形式為:char 陣列名[資料長度]。字元陣列用於存放字元或字串,字元陣列中的乙個元素存放乙個字元,它在記憶體中佔用乙個位元組。
c語言中沒有字串型別,字串是存放在字元型陣列中的,所以字串有兩種宣告方式,一種是字元陣列,一種是字元指標。
char ch[11]
=;
注意:如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理;若小於陣列長度,則只將這些字元陣列中前面那些元素,其餘的元素自動定為空字元(即』\0』 )。
char ch=
;//也可以省略花括號
char ch=
"i love you"
;
但是,上述這種字元陣列的整體賦值只能在字元陣列初始化時使用,不能用於字元陣列的賦值,字元陣列的賦值只能對其元素一一賦值,下面的賦值方法是錯誤的:
//定義陣列時沒有定義大小,也沒有進行賦值,報錯
char ch[
];
//定義陣列時定義了大小,但隨後對其進行賦值,報錯
char ch[11]
;ch=
"i love you"
;//錯誤,字元陣列的賦值只能按元素一一賦值(錯誤的原因: c語言並沒有提供可以直接操作字串的運算子;「=」可以用於其他資料型別的賦值,但是不可以直接給字串賦值。
以上就是初始化字元陣列的兩種方式,但要注意它們其實並不是等價的,因為它們的陣列長度其實是不同的,我們來看乙個例子就可以了:example:
int
main()
;//也是10個字元
printf
("the chr is: %s\n"
,chr)
;printf
("the size of chr is %d\n\n"
,sizeof
(chr));
char chrr=
;//結尾加上'\0'
printf
("the chrr is: %s\n"
,chrr)
;printf
("the size of chrr is %d\n\n"
,sizeof
(chrr));
return0;
}
輸出結果:
從結果可以看到第二種初始化方式,列印的結果有問題,但是字符數量沒有問題。這是因為字串預設是以』\0』結束的,第二種初始化方式中沒有』\0』,而我們以字串方式列印,所以會出錯。
第一種是系統自動新增了』\0』,我們可以看到其字元數量是11(與第三種相同)。
字元指標:在c語言中我們也可以使用字元指標來儲存字串。
char
* str=
"i love you"
;
c語言對字串常量是按照字元陣列來處理的,在記憶體中開闢了乙個字元陣列用來存放字串常量,程式在定義字串指標變數str時,只是把字串首位址賦值給str
printf
("%s"
,str)
;
int
main()
strcpy的原型:char *strcpy(char * dest,const char * src);
標頭檔案:string.h和stdio.h*
注:字元陣列dest必須是陣列名形式,src可以是陣列名也可以是字串常量 可以用strcpy將src的前若干個字元複製到字元陣列中
strcat的原型:char *strcat(char * dest,const char * src);
標頭檔案:string.h
功能: 把src中的內容複製到dest結尾處(覆蓋』\0』)
注:src和dest記憶體區域不可以重疊,dest必須有足夠的空間來容納src; 字元陣列dest必須是陣列名形式,src可以是陣列名也可以是字串常量,返回指向dest的指標
int
main()
輸出結果:
strcmp的原型:int strcmp(const char *s1,const char *s2);
功能:strcmp函式是string compare(字串比較)的縮寫,用於比較兩個字串並根據比較結果返回整數。基本形式為strcmp(str1,str2),若str1=str2,則返回零;若str1str2,則返回正數。
int
main()
else
if(tmp>0)
else
return0;
}
輸出結果:(1)在c語言中並沒有直接提供字串的操作,其字串操作是通過轉化為字串完成的,例如字元陣列,字元指標,其本質是對字元的操作(2)作為字元陣列,與普通陣列相同,區別在於它的每乙個元素是乙個字元,所以不可以直接用「=」對字元陣列賦值
(3)字串一定是以』\0』結尾的;字元陣列和字元指標我們當做字串整體初始化,系統會自動新增』\0』;對於字元陣列,如果採用單個字元的方式進行初始化或者賦值一定要考慮結束符』\0』
(4)strcpy和strcat內部也是對字元的操作,以『\0』作為字串結束的標誌
c語言字串初始化 C 字串
c 提供了以下兩種型別的字串表示形式 c 風格的字串起源於 c 語言,並在 c 中繼續得到支援。字串實際上是使用null字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的宣告和初始化建立了乙個 hello 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的...
C語言字串初始化關於數字
先判斷下面的 char str1 0123 printf size d n sizeof str1 可能你會大聲的說出 5 有可能你的理由是 第乙個 第二個 0 第三個 1 第四個 2 第五個 3還有可能你的理由是 第乙個 0 第二個 1 第三個 2 第四個 3 第五個 0如果你的理由是最上面那個,...
字串陣列初始化
1 char arr 10 hi 初始化字串陣列時,編譯器自動將字串最後乙個字元後面加上 0 以表示字串的結束。如果陣列的大小大於字串的長度 1,那麼把字串結束後面的元素也都初始化為 0 看這段程式 定義乙個大小為12的字串陣列 char str1 12 jiajia 讓乙個char型的指標指向這個...