本篇部落格的**是在vc6.0++中實現;
一看部落格標題好像是在說字元陣列的,實際上在c語言中,字元型陣列包括字元陣列和字串陣列;陣列知識並不是很難的知識,但是一些細節問題需要注意,繁瑣的概念問題不在過於強調,只強調一些易錯易忽視的一些問題;
字元陣列
概念:顯然是由一些字元組成的陣列;例如;
定義乙個字元陣列:一維陣列:char 函式名[行 常量表示式]例如:char ch[5];
二維陣列:char 函式名[列 常量表示式]例如:char ch[2][12]
注意:由於字元和整型可以在0~127之間可以轉換,int ch[10]也可以說是字元型,這個不建議使用,可以忽略這個知識點
初始化:
注意:1. char ch[12] = ;
2. char ch = ;
3. char [2][12] = ,};
4. char [12] = ,}
初始化過程中,沒有被初始化的陣列項編譯器會給預設賦值』\0』;(整數陣列沒有被初始化的陣列項被賦值為0)。例如:char ch[5] = ; 中 ch[4] = 『\0』;
在二維陣列中,行可以不寫,列不能不寫;3)
字串陣列
概念:字元陣列的另外一種形式;字元之間直接連線;
定義乙個字串陣列:一維陣列char 變數名[行 常量表示式]; 二維陣列char 變數名[行 常量表示式][列 常量表示式];
初始化:
注意:1. char str[11] = ;
2. char str = ;
3. char str = "i love you";
4. char str[12] = "i love you";
5. char str[2][14] = ,};
6. char str[14] = ,};
1)對於字元陣列來說,要求常量表示式大於或等於陣列內字元數;而對於字串陣列來說,常量表示式只能大於字串陣列字元數,因為:編譯器會為每個字串末尾賦值乙個字串結束標誌–>『\0』,所以在對字串陣列初始化時,我們必須預先為結束標誌騰出乙個字元空間;
從陣列型別來看:char a = ;
char b = ;
char c = ;
a是字串陣列,系統會分配結束標誌符號『\0』;常量表示式必須比有效字元數大(至少1);
b和c都是字元陣列,系統並不分配結束字元;c[10] == '\0』也是我們自己加的;
從陣列項來看:
a和c雖然表達形式不同,乙個字元陣列,乙個字串陣列;但是兩個陣列基本上可以劃等號;陣列長度,輸出等一樣,不僅可以用%s和%c他倆賦值,還可以用%s和%c輸出;
b就是乙個純字元型別,不能用%s對其輸入賦值,也不能用%s對其輸出,否則將會出現錯誤;
總結一下:其實可以將字串陣列看成是字元陣列的一種特殊表現形式;解決了字元陣列輸入困難,初始化困難,輸出困難的弊端;
sizeof(物件)函式
功能:用來測量括號內物件占用的記憶體空間大小;
例子:(在vc6.0環境中)
strlen(物件)函式int a;
double b;
char c;
char d[4] = ;
char e = ;
sizeof(a); //a為整型,乙個整形變數占用4個位元組空間,sizeof函式返回值為4;
sizeof(b); //b為double型,乙個整形變數占用8個位元組空間,函式返回值也為8;
sizeof(c); //c為字元型,乙個字元占用1個字元空間,函式返回值為1
sizeof(d); //字元陣列d一共占用4*1個字元空間,函式返回值為4;
sizeof(e); //字串陣列e一共占用5*1個字元空間,函式返回值為5;
注意:這個函式並不像sizeof一樣可以測量其他型別資料,只能用來測量字串陣列;
功能:用來測量字串陣列的有效長度(這裡的長度指的是位元組數);
例子:
字元陣列和字串陣列在僅僅定義不初始化的情況下是定義的方式是一樣的;如果通過scanf對其進行賦值的時候,對這個陣列輸入字元型別的控制也就是%s或%c的不同決定了這個陣列是字串陣列還是字元陣列;這裡還要注意字串陣列的技術識別符號占用乙個空間;char a=;
sizeof(a); //字串a內一共有5個字元,但是有效字元是『\0』之前的,也就是love;所以函式返回值為4;
/*字串陣列中結束識別符號'\0'的作用*/
char b=; //b所指向的字串確實是:love\0love\0
strlen(b); // strlen()在對字串b進行掃瞄的時候,直到遇到結束識別符號'\0'之前都是有效字元,之後的全部無效;所以strlen返回值為4;
sizeof(b); //對於字串b來說所指向的字串是完整的love\0love\0,占用的空間也是10*1==10;所以返回值為10;
C語言中字元型和字串型的對比
字元型 c語言中字元用單引號括起來,儲存方式以ascii編碼二進位制形式儲存,占用乙個位元組 如 a b c a 等 注意 在c語言中將字元型看成特別短的整形,unsigned int 的長度剛好是0 256的範圍。字元常量和變數 1 字元常量 用單引號括起來的單個字元 a 特點 a 只能用單引號來...
C語言中字元陣列的儲存
程式片段 void mstrcat char s,char t 這是乙個字元陣列連線的函式 一 在測試程式中宣告如下 char a abcd char b ef char s ghijklmnopqrstuvwxyz char c char d mstrcat b,s 連線後的b printf af...
C語言中字元陣列庫函式
以下內容摘自 c程式設計教程 美 h.m.deitel p.j.deitel著,薛萬鵬等譯,機械工業出版社。void memccpy void dest,const void src,int c,size t n 從sr 所指向的物件複製 個字元到 est所指向的物件中。如果複製過程中遇到了字元c則...