C字元數組賦值 .

來源:互聯網
上載者:User

轉自:http://blog.csdn.net/jphaoren/article/details/5803583

舉例如下:

char a[10];
1、定義的時候直接用字串賦值
char a[10]="hello";
注意:不能先定義再給它賦值,如
 char a[10];
 a[10]="hello";
這樣是錯誤的!

2、對數組中字元逐個賦值
char a[10]={'h','e','l','l','o'};

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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.