C語言中字元陣列的初始化與賦值

2021-07-22 23:56:15 字數 1996 閱讀 9180

在c語言中,字串是當做字元陣列來處理的;所以字串有兩種宣告方式,一種是字元陣列,一種是字元指標。

char parr = "zifuchuanshuzu";

char charr = ;

這是字元陣列初始化的兩種方式,但是這兩種方式其實是不等價的;他們的陣列長度不同。

#include

int main() ;

//等價於charr

char charr_test = ;

int num_parr = sizeof(parr);

int num_charr = sizeof(charr);

int num_charr_test = sizeof(charr_test);

printf("the parr is : %s\n", parr);

printf("the size of parr is : %d\n\n", num_parr);

//與charr不等價

printf("the charr is : %s\n", charr);

printf("the size of charr is : %d\n\n", num_charr);

//等價於charr

printf("the charr_test is : %s\n", charr_test);

printf("the size of charr_test is : %d\n", num_charr_test);

return

0;}

執行結果如圖:

從結果可以看到第二種初始化方式,列印的結果有問題,但是字元數量沒有問題。這是因為字串預設是以』\0』結束的,第二種初始化方式中沒有』\0』,而我們以字串方式列印,所以出錯;

第一種第一方式是系統自動新增了』\0』;我們可以看到其字元數量是15(與第三種相同)。

下面的初始化方式是錯誤的

char parr[15];

parr="zifuchuanshuzu";

錯誤的原因:

c語言並沒有提供可以直接操作字串的運算子;「=」可以用於其他資料型別的賦值,但是不可以直接給字串賦值。

char *strcpy(char *dest,const

char*src);

字元陣列dest必須是陣列名形式,src可以是陣列名也可以是字串常量

可以用strcpy將src的前若干個字元複製到字元陣列中

char *strcat(char *dest,const

char *src);

標頭檔案:string.h

功能:

把src中的內容複製到dest結尾處(覆蓋』\0』)。

注:

src和dest記憶體區域不可以重疊,dest必須有足夠的空間來容納src;

字元陣列dest必須是陣列名形式,src可以是陣列名也可以是字串常量;

返回指向dest的指標;

#include

#include

int main()

在c語言中我們也可以使用字元指標來儲存字串。

char* str="zifuchuanshuzu";
printf("%s\n",str);
系統首先輸出str指向的字元,而後自加1,直至遇到』\0』;與陣列的輸出方式相同。

char *str;

str="zifuzhizhen";

對於字元指標這種賦值方式是正確的。與字元陣列不同。

C語言中字元陣列的初始化與賦值,字串相關函式!

在c語言中,字串是當做字元陣列來處理的 所以字串有兩種宣告方式,一種是字元陣列,一種是字元指標。1 直接逐個初始化字元陣列 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。char str 10 注意 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這...

字元陣列初始化與賦值

char a 10 怎麼給這個陣列賦值呢?1 定義的時候直接用字串賦值 char a 10 hello 注意 不能先定義再給它賦值,如char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 3 利用strcpy char a 10 strcpy a,he...

陣列的初始化與賦值

以乙個整型陣列和乙個char型陣列為例 int a 2 char s 5 這樣初始化時可以的,使用cout輸出s陣列的時候,不報錯,但直接使用s這個陣列名輸出缺少了乙個適當的 0 結尾 對比上面的初始化,只能對陣列的元素賦值,而不能用賦值語句對整個陣列賦值 c 程式設計 譚浩強 149頁 例如下面是...