在討論陣列儲存漢字之前,首先要明確乙個基本概念:漢字儲存占用空間大小與使用何種編碼方式有關。
常見的中文編碼gb2312(國標簡體中文字符集)和gbk(國標擴充套件)使用2 個位元組編碼來表示乙個漢字,不常用的gb18030使用4 個位元組編碼來表示乙個漢字,更通用的utf-8編碼使用3 個位元組編碼來表示乙個漢字。關於編碼方式的更詳細的介紹請移步文末參考鏈結。
以下總結了gb和utf-8字符集下,對儲存漢字的陣列進行初始化的例項。
一、在使用 gb2312 或 gbk 字符集時,使用如下例項進行初始化:
1. 使用陣列儲存1個漢字
char a=
"字";
// 定義乙個漢字的陣列
char a=
;// 也可以加上
這兩種情況系統都會在後面自動加上'\0'
,即a[2]
='\0' 漢字佔2個位元組a[
0]和a[1];
也可以這樣:
char a[3]
="字"
;char a[3]
=;以上兩種方法定義的空間是一樣大的,都是3個位元組。
char i;
for(i=
0;i<
3;i++
)使用 char 時 output:a[0
]=0xffffffd7;a[
1]=0xffffffd6;a[
2]=0x00
;使用 unsigned
char 時output: a[0
]=0xd7;a[
1]=0xd6;a[
2]=0x00
;
2. 使用陣列儲存漢字字串char a=
"漢字字串"
;// 定義多個漢字的陣列
char a=
;// 也可以加上
同樣系統會在後面自動加上'\0'
,即 a[10]
='\0' 漢字佔10個位元組a[0]
~a[9
];也可以這樣:
char a[11]
="漢字字串"
;char a[11]
=;以上兩種方法定義的空間是一樣大的,都是11個位元組。
3. 陣列空間大於漢字字元數的情形char a[11]
="漢字"
;char a[11]
=;這種方法定義陣列,系統會將 a[5]
~a[10
] 自動新增'\0'。
4. 多維陣列的使用char a[2]
[9]=
;//使用多維陣列的情形
char a[2]
[9]=
,};//也可以加
其中:a[0]
="多維陣列";a[
1]="這樣表示"
;
5. 字元指標的使用char
* arrayname =
"使用字元指標"
;// 同樣可以加
或:char
* arrayname;
arrayname =
"使用字元指標"
;// 同樣可以加
char
* arrayname[2]
=,};
或:char
* arrayname[2]
;arrayname[0]
="字元指標陣列"
;// 同樣可以加
arrayname[1]
="字元指標陣列"
;
6. 陣列之間傳遞漢字系統中漢字的輸入,一般由鍵盤輸入、檔案讀取、遠端通訊等介面函式輸入,其本質上還是對字元的傳遞,下面給出最簡單的傳遞漢字的方法:
char i;
char a[2]
[9];
char b[9]
=;for(i=
0;i<
9;i++
)printf
("%s"
,a[0])
;output:傳遞漢字
二、在使用 utf-8 字符集時,單個漢字占用 3 個位元組空間,其它與使用 gb2312 或 gbk 字符集的初始化方法一樣:
這裡僅列出使用陣列儲存 1 個漢字的例項
char a=
"字";
// 定義乙個漢字的陣列
char a=
;// 也可以加上
這兩種情況系統都會在後面自動加上'\0'
,即 a[3]
='\0' 漢字佔3個位元組 a[
0]、a[
1]和a[2];
也可以這樣:
char a[4]
="字"
;char a[4]
=;以上兩種方法定義的空間是一樣大的,都是4個位元組。
char i;
for(i=
0;i<
4;i++
)使用char時output:a[0
]=0xffffffe5;a[
1]=0xffffffad;a[
2]=0xffffff97;a[
3]=0x00
;使用unsigned
char時output: a[0
]=0xe5;a[
1]=0xad;a[
2]=0x97;a[
3]=0x00
;
儲存類別小結 c語言
說在前面 文件根據工作都是在有道雲筆記儲存,這些都是存貨。發布出來大家學習,希望對大家有幫助!下面從不同角度做歸納 1 從作用域角度分,有區域性變數和全域性變數 靜態外部變數 只限文字引用 內部鏈結 按作用域角度分 自動變數,即動態區域性變數 離開函式,值就消失 區域性變數 靜態區域性變數 離開函式...
C語言陣列排序小結
讓我們先定義乙個整型陣列a n 下面用五種方法對其從小到大排序。1 冒泡法 冒泡法大家都較熟悉。其原理為從a 0 開始,依次將其和後面的元素比較,若a 0 a i 則交換它們,一直比較到a n 同理對a 1 a 2 a n 1 處理,即完成排序。下面列出其 void bubble int a,int...
C語言陣列排序小結
很多朋友是以譚浩強老師編的 c語言教程 作為學習c語言的入門教程的。書中涉及排序問題一般都以 冒泡法 和 選擇法 實現。為了擴大視野,增加學習程式設計的興趣,我參閱了有關書籍,整理了幾種排序法,寫出來同大家共勉。高手們不要笑,這篇文章是寫給出學者的,而且我自己也是只菜鳥,雖然內容陳舊,但值得初學者一...