C字元陣列賦值

2022-08-10 15:06:21 字數 1088 閱讀 2755

**:

舉例如下:

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, "hello");

易錯情況:

1、char a[10]; a[10]="hello";//乙個字元怎麼能容納乙個字串?況且a[10]也是不存在的!

2、char a[10]; a="hello";//這種情況容易出現,a雖然是指標,但是它已經指向在堆疊中分配的10個字元空間,現在這個情況a又指向資料區中的hello常量,這裡的指標a出現混亂,不允許!

還有:不能使用關係運算子「==」來比較兩個字串,只能用strcmp() 函式來處理。

c語言的運算子根本無法操作字串。在c語言中把字串當作陣列來處理,因此,對字串的限制方式和對陣列的一樣,特別是,它們都不能用c語言的運算子進行複製和比較操作。直接嘗試對字串進行複製或比較操作會失敗。例如,假定str1和str2有如下宣告:

char str1[10], str2[10];

利用=運算子來把字串複製到字元陣列中是不可能的:

str1 = "abc";     /*** wrong ***/

str2 = str1;       /*** wrong ***/

c語言把這些語句解釋為乙個指標與另乙個指標之間的(非法的)賦值運算。但是,使用=初始化字元陣列是合法的:

char str1[10] = "abc";

這是因為在宣告中,=不是賦值運算子。

試圖使用關係運算子或判等運算子來比較字串是合法的,但不會產生預期的結果:

if (str1==str2) ...    /*** wrong ***/

這條語句把str1和str2作為指標來進行比較,而不是比較兩個陣列的內容。因為str1和str2有不同的位址,所以表示式str1 == str2的值一定為0。

字元陣列賦值

字元陣列操作需要用的函式有,strcpy,strcmp,strlen,strcpy 和 memcpy 區別 strcpy 函式使用方法 if 1 叫小屁孩空手去買東西 char p 0 無記憶體空間 記憶體位址 00000000 uint32 t pnum 0 無記憶體空間00000000 nrf ...

c 陣列賦值

c 中陣列複製有多種方法 陣列間的複製,int pins int alias pins 這裡出了錯誤,也是錯誤的根源,以上 並沒有出錯,但是根本不是複製,因為pins和alias都是引用,存在於堆疊中,而資料9,3,4,3是乙個int物件存在於堆中,int alias pins 只不過是建立另乙個引...

C 陣列賦值

情況1 無 如果沒有初始化函式中定義的陣列,則其元素將是不確定的,這意味著元素的值為以前駐留在該記憶體單元中的值。int includeusing namespace std int main system pause return 0 輸出 858993460 2 858993460 858993...