c語言字元串類型
『壹』 關於c語言字元型
關於printf("%c"a[i]);(如果把他換成printf("%s",a[i]);為什麼不能編譯?
回答: 編譯應該沒問題, 只是運行時必定錯誤.
字元串指一串連續的字元型的存儲域. C語言的字元串在操作時一般以0值字元標志字元串的尾字元(佔一個字元的存儲域,但不計入字元串長度).
"%c"應該對應於字元型變數(當然字元串中的一個字元也可以);"%s"應該對應於一個指向字元串的指針變數.執行printf("%s",a[i]);時, 程序把字元a[i]的值作為字元串指針來使用,當然就發生錯誤了. 如果寫成printf("%s",a)甚至printf("%s",&a[2])都是正確的.
另外, 用"%s"不用使用for循環, 一個printf("%s",a)即可輸出一個以空字元(0)結尾的字元串; 而用for循環加printf("%c",a[i])的方式, 則是以字元方式輸出a這個字元數組中全部10個字元, 即使這些字元不構成以空字元(0)結尾的字元串.
由此看來字元串必定是字元數組, 而字元數組里存儲的不一定是字元串. 字元數組里每一個元素都可以取-128~127的值, 無符號字元數組里每一個元素都可以取0~255的值. 而C語言中的字元串所取的值是以0標志結束的一串非零字元(即-128~-1, 1~127; 對應於無符號字元是1-255; 大多在可列印字元和有限的控制字元范圍內取值).
『貳』 c語言字元型和字元串型的區別
我只回答一下你提出的問題吧.其他不懂的你可以再跟我聯系.
char c; 聲明字元變數c,系統為c分配一個字元的空間
c="abcd"; //這是是錯誤的. abcd要佔4的字元的空間,c中放不下.
聲明字元串常量也能用"char".要用到數組.(如果你沒學到數組,等你學了以後就明白了)例:
char string[4];
string="abcd";
string中存放的就是字元串"abcd"了.
列印字元型的時候,printf("%c/n,"c1),如果是列印字元串型,只需把%c改為%s即可.例:
printf("%s",string); //列印字元串string(abcd)
『叄』 C語言中有string嗎
C語言中沒有string類型。
string類型是 C++、java、VB等編程語言中的。 在java、C#中,String類是不可變的,對String類的任何改變,都是返回一個新的String類對象。string 是C++標准程序庫中的一個頭文件,定義了C++標准中的字元串的基本模板類std::basic_string及相關的模板類實例。
而在C語言中,C語言中沒有字元串類型,字元串是存放在字元型數組中的,將字元串作為字元數組來處理的。為了測定字元串的實際長度,C語言規定了一個「字元串結束標志」,以字元'