字元陣列是元素型別為字元的陣列,它既具有普通陣列的一般性質,又具有某些特殊性質。
字串常量是用雙引號包圍的字串行。儲存字串常量時,系統會在字串行後自動加上'/0',標誌字串的結束。字串的長度定義為字串中的有效字元數,不包括結束標誌'/0'和雙引號。
字串變數是以'/0'作為結束標誌的字元陣列。字串變數用於儲存和處理字串常量。在書中統稱為字串的,既可能是字串常量也可能是儲存了字串常量的字串變數,即特殊的字元陣列。
字元陣列有兩種用法:一是當作字元的陣列來使用。這時的用法與整數的陣列、
實數的陣列等相同,對字元陣列的輸入、輸出、賦值、引用等都是針對單個的元素進行。二是更為重要的用法即儲存、處理字串。這時它除了可以像普通陣列一樣使用外,還可以把字串作為乙個整體進行操作。
(1)用字元對字元陣列初始化
這時把字元陣列當作普通陣列看待, 產生的陣列不會有結束符'/0'。當資料量很大時,使用這種方法的工作量是繁重的。
例:char rat[5]=;
(2)用字串常量對字元陣列初始化,這時把字元陣列當作字串變數看待。
例:char panic[6]=;
注意: 第二個說明語句中有6 個字元, 因此字元陣列panic 的長度是6, 而字串"hello"的長度卻是5,不把'/0'計算在內。
c語言也允許在用字串初始化時省略花括號。
char panic="hello";
如果在說明語句中指定了陣列的長度,那麼其大小不得小於初始化字串的長度。多餘的元素位置被系統自動初始化為0。實際上'/0'就是ascii碼為0的字元,因此'/0'和整數0是一回事。
例:char posia[11]="string";
下面的初始化卻是錯誤的:
char neg[5]="double arrow"; /*初始化資料太多*/
3)字元陣列兩種不同用法舉例
在前面已經說明,字元陣列既可當作普通陣列使用也可用於儲存和處理字串.下面是對應兩種用法的例子。
例: 字元陣列用法示例之一,當作普通陣列。
#include程式中為了處理陣列使用了迴圈,並且使用了ch,i,j等工作變數,增加了程式的負擔,而且又缺乏靈活性,故這種方法很少使用。與下面完成同樣功能的程式相比,本程式複雜多了。#define size 10
main()
;char ary2[size];
char ch;
int i,j;
for(i=0;i<4;i++) /*輸出陣列ary1*/
printf("%c",ary1[i]);
printf("/n請輸入一行字元/n");
for(i=0;i輸入陣列ary2*/
printf("/n");
for(j=0;j輸出陣列ary2*/
printf("%c",ary2[j]);
}
例:字元陣列用法之二,
當作字串。
#include#define size 10
main()
程式沒有用迴圈,只是直接呼叫scanf和printf函式完成輸入輸出。程式之所以能夠自動識別出字串有幾個字元,是因此規定了字串必須以'/0'作為結束, 像printf之類的函式輸出字串時一邊檢測一邊輸出,一旦碰到'/0',便認為字串已經結束,之後就停止工作。這樣一來'/0'對整個字串來說至關重要了。一旦由於某種原因字串的'/0'被改為別的值,字串就無法終止,printf函式就不能正常工作了。
請注意printf和scanf函式處理字串陣列的特點。直接使用陣列名作為引數。
例:printf("%s/n",ary1);
這種直接使用陣列名的用法表示把字串陣列當作乙個統一整體來處理,只適用於字串,對別的型別的陣列是不能這樣用的。
隨便寫一寫
簡單的來說,就是公私合營的一種模式。針對大型的公共設施建設,這種模式有著很大的優點。天子山鎮因其坐落於著名的天子山腳下而得名,鎮區內分布著奇特的石英砂巖峰林地貌 茂密的原始森林和清澈的溪流,自然村落形成的田園風光獨具特色,當地流傳的向王天子傳說 土家山寨和集鎮上臨街而建的吊腳樓 青石板人行街道 古香...
第一寫部落格
說一下python 與c或c 在語法上的一些不同之處。在python中不會出現像c或c 一樣麻煩的規定符號 一些指令也要簡便許多。在python中 當你打出 按下回車時 電腦會自動幫助你縮排一格 縮排使得python的語言顯得非常精簡 當然要正確使用 否則會報錯 當你輸入pr時按下tab 電腦會自動...
第一寫程式 小白崩潰
遊戲 漢諾塔,要求函式接收引數n,表示3個柱子a b c中第1個柱子a的盤子數量,然後列印出把所有盤子從a借助b移動到c的方法。總步數計算函式 函式說明 根據歸納法可知n m形成遞迴函式關係 mn 2 m n 1 1 引數說明 n a柱初始總盤子數量值,m 總步數計算輸出值 def f bushu ...