C語言關於字元陣列 字串初始化賦值的一些知識點

2021-10-02 10:43:51 字數 3457 閱讀 2940

字元陣列是指用來存放字元資料陣列。其定義的一般形式為: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型的指標指向這個...