第七章 字元陣列

2021-10-04 18:54:44 字數 3956 閱讀 9191

用來存放字元資料的陣列是字元陣列,常用來處理字串.

字元陣列其實就是型別為char的陣列.

同其他型別的陣列一樣,字元陣列既可以是一維的,也可以是二維的甚至是多維的.

但是由於字元陣列和普通的陣列具有差異,因此將單獨講解字元陣列.

本章內容如下:

一維陣列的定義:

char 陣列名[常量表示式]

;

二維陣列的定義:

char 陣列名[常量表示式]

[常量表示式]

;

而且由於在c語言中字元型資料可以和整型通用,但是由於每個整形資料劃分兩個位元組(8個位元位)的空間,而每個字元資料劃分乙個位元組(4個位元位)的空間.

因此最好不要用整形陣列來存放字元型陣列浪費空間

字元陣列的初始化分成三種.分別是:宣告時陣列的初始化,宣告後陣列的初始化和字串初始化

前兩種初始化和普通陣列的初始化相同.

語法如下:

char 陣列名[常量表示式]

=;

需要注意的是:

語法如下:

array[i]

='字元'

;

需要注意的是:

字串的初始化其實是利用了字串和字元陣列的關係,這點將在後面講

語法規則如下:

char 陣列名=

"字串"

;

例如:

char array=

"good night!"

需要注意的是,空格作為轉義字元\n也包含在字串中

並且在這樣用字串初始化的方法會在最後自動新增乙個結束標記\0

最後的儲存就是 good night!\0

字元陣列的引用和前面陣列的引用一模一樣,這裡就不再贅述了

在c語言中,字串就是用雙引號包含起來的一段話

例如:

"i am very good"
而字串在c語言中的儲存實際上就是用字元陣列實現的.

但是對於字串而言,如果我們需要知道字串在什麼地方結束,即這句話在那裡結束.

因此我們實際上在儲存字串的時候會在字串的結尾加上乙個標誌來表明這句話的結束

這個標記並不會計入到字串的長度中,即用sizeof()求長度時候會包含/0

因此定義乙個長度為10的字元陣列實際上只能輸入9個字元

這個標誌就是: \0,對應ascii值為000

在ascii表中000表示無/空值(null)

需要注意的是數字0在ascii表中對應的值是048

所以上面那句話在記憶體中的儲存其實是:i am very good\0

字串在字元陣列中的儲存形式是字元陣列.所以對於字串的輸入和輸出其實就是字元陣列的輸入和輸出

由於字元陣列用字串初始化時有\0結尾標記,而用其他兩種方式初始化時沒有\0結尾標記.

所以字元陣列的輸出分成兩種

不具有\0標記

對於不具有\0標記的字元陣列的輸出和普通陣列的輸出沒有區別.就是用for迴圈遍歷輸出

例如:

char array[4]

=;for(i=

0;i<

4;i++

)

具有\0標記

對於具有\0標記的字串,即通過字串初始化的方式初始化的陣列輸出有兩種方法

第一種就是for迴圈遍歷輸出

第二種就是用%s字元配合指標集體輸出

例如:

char array[4]

="good"

;printf

("%s"

,array)

;

字元陣列的輸入有兩種

第一種就是for遍歷,用%c格式控制符

第二種就是用%s格式控制符.

c語言中由很多字串處理的庫函式,這些庫函式為字串處理提供了方便.

他們被封裝在標頭檔案中.

在使用的時候需要先導包

下面將一一介紹這些函式

gets函式用於輸入乙個字串.呼叫格式如下:

gets

(字元陣列)

;

gets的作用是講乙個字串存到字元陣列中,並且得到乙個函式值,返回值是存放輸入字串的字元陣列的起始位址,乙個整數

例如:

char str[20]

;char address;

address=

gets

(str)

;

puts函式用於輸出乙個以』\0』結尾的字串.呼叫格式如下:

puts

(字元陣列)

;

strlen函式用於測試字串的長度.返回值為字串的實際長度,不包括』/0』所佔的位置.點用格式如下:

puts

(字元陣列)

;

例如:

char str[20]

="hello\tworld"

;int a;

a=strlen

("str");

>>

>a=

11

strlen函式也可以直接測試字串的長度

strlen

("hello\tworld"

);

c語言中由於不允許直接使用比較運算子來直接比較兩個陣列是否相同.

例如:

if

(str1==str2)

所以c語言中提供了strcmp函式用於比較兩個字元陣列是否相同.

從左到右依次按ascii碼值比較.

返回值是比較結果:

c語言中,不允許使用賦值語句來直接將乙個字串賦值給另外乙個字元陣列.例如:

str1=str2
但是c語言提供了兩個用於字串複製的陣列

strcpy函式

strcpy函式用於從左到右依次複製直到遇到\0.呼叫格式如下:

strcpy

(待賦值陣列,需複製陣列)

需要注意的是:

strncpy函式

strncpy函式用於複製指定個數個字元.呼叫格式如下:

strncpy

(待賦值函式,需複製函式,字元數)

;

strcat函式用於連線兩個以\0結尾的字串,並放入第乙個陣列中.呼叫格式如下:

strcat

(字元陣列1

,字元陣列2

);

例如:

char str1[10]

="how"

;char str2[20]

="are you?"

;strcat

(str1,str2)

;

需要注意的是:

是字元陣列的首位址

strncpy函式

strncpy函式用於複製指定個數個字元.呼叫格式如下:

strncpy

(待賦值函式,需複製函式,字元數)

;

strcat函式用於連線兩個以\0結尾的字串,並放入第乙個陣列中.呼叫格式如下:

strcat

(字元陣列1

,字元陣列2

);

例如:

char str1[10]

="how"

;char str2[20]

="are you?"

;strcat

(str1,str2)

;

需要注意的是:

第七章 陣列

陣列js陣列可以存放任何類資料型別書寫方法 定義式 var arr1 new array var arr2 new array 3 建立乙個長度為3的陣列 var arr3 new array 1,2,3 建立乙個內容為1,2,3的陣列 表示式 var arr 推薦寫法陣列是什麼資料型別陣列是obj...

第七章 陣列

1,逆序輸出語句public class sentencs 2,找出陣列下標public class num arrays.sort score system.out.println 最低積分是 score 0 下標最低即為最低值 int index arrays.binarysearch scor...

第七章 陣列實驗

1 寫乙個函式,對用隨機函式產生的10個整數按從小到大的順序排序 公升序,氣泡排序實現 2 寫乙個函式,對用隨機函式產生的10個整數按從小到大的順序排序 公升序,用選擇排序實現 3 輸出指定行數的楊輝三角形 4 給定某年某月某日,將其轉換成這一年的第幾天並輸出 5 編寫程式,判斷某一字元是不是 回文...