日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C字符数组赋值(转)

發布時間:2023/12/4 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C字符数组赋值(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

舉例如下:

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。

?

?

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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C字符数组赋值(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。