C語(yǔ)言數(shù)組基礎(chǔ)篇


前言
上章節(jié)講到C語(yǔ)言的遞歸,詳細(xì)內(nèi)容請(qǐng)參見(jiàn)上章節(jié)。本章節(jié)主要給大家講解批量處理數(shù)據(jù),C語(yǔ)言中的數(shù)組。

C語(yǔ)言中的數(shù)組
當(dāng)我們處理大量數(shù)據(jù)值時(shí),我們需要任意數(shù)量的不同變量。隨著變量數(shù)量的增加,程序的復(fù)雜性也會(huì)增加,因此程序員會(huì)對(duì)變量名稱(chēng)感到困惑。在某些情況下,我們需要處理大量類(lèi)似的數(shù)據(jù)值。為了使這項(xiàng)工作更容易,C編程語(yǔ)言提供了一個(gè)名為“數(shù)組”的概念。
數(shù)組是一種特殊類(lèi)型的變量,用于一次存儲(chǔ)多個(gè)相同數(shù)據(jù)類(lèi)型的值。
數(shù)組是存儲(chǔ)在具有單個(gè)名稱(chēng)的連續(xù)內(nèi)存位置中的類(lèi)似數(shù)據(jù)項(xiàng)的集合。

數(shù)組聲明
在C語(yǔ)言中,當(dāng)我們想要?jiǎng)?chuàng)建一個(gè)數(shù)組時(shí),我們必須知道要存儲(chǔ)在該數(shù)組中的值的數(shù)據(jù)類(lèi)型以及要存儲(chǔ)在該數(shù)組中的值的數(shù)量。
創(chuàng)建一個(gè)數(shù)組語(yǔ)法: 類(lèi)型 數(shù)組名[size]
創(chuàng)建具有大小和初始值的數(shù)組的語(yǔ)法:類(lèi)型 數(shù)組名[size]={value1,value2,...};
創(chuàng)建沒(méi)有大小和初始值的數(shù)組的語(yǔ)法:類(lèi)型 數(shù)組名[size]={value1,value2,...};
在上面的語(yǔ)法中,數(shù)據(jù)類(lèi)型指定我們存儲(chǔ)在該數(shù)組中的值的類(lèi)型,size指定可以存儲(chǔ)在該數(shù)組中的最大值數(shù)。
示例代碼
int a [3] ;
這里,編譯器使用單個(gè)名稱(chēng)“a”分配6個(gè)字節(jié)的連續(xù)內(nèi)存位置,并告訴編譯器將三個(gè)不同的整數(shù)值(每個(gè)內(nèi)存為2個(gè)字節(jié))存儲(chǔ)到該6個(gè)字節(jié)的內(nèi)存中。對(duì)于上述聲明,內(nèi)存組織如下:

在上面的內(nèi)存分配中,所有三個(gè)內(nèi)存位置都有一個(gè)通用名稱(chēng)“a”。因此無(wú)法直接訪問(wèn)單個(gè)內(nèi)存位置。因此,編譯器不僅分配內(nèi)存,還為數(shù)組的每個(gè)單獨(dú)的內(nèi)存位置分配一個(gè)數(shù)字引用值。該參考編號(hào)稱(chēng)為“索引”或“下標(biāo)”或“索引”。以上示例的索引值如下:


訪問(wèn)數(shù)組中的元素
使用'arrayName'和'indexValue'的組合來(lái)標(biāo)識(shí)數(shù)組的各個(gè)元素。我們使用以下通用語(yǔ)法來(lái)訪問(wèn)數(shù)組的各個(gè)元素:
數(shù)組名[數(shù)組下標(biāo)];
對(duì)于上面的例子,各個(gè)元素可以表示如下:

例如,如果我們想要將值賦給上面數(shù)組'a'的第二個(gè)內(nèi)存位置,我們使用以下語(yǔ)句...
示例代碼
a [1] = 100 ;
上述轉(zhuǎn)讓聲明的結(jié)果如下:


C語(yǔ)言數(shù)組分類(lèi)
在c編程語(yǔ)言中,數(shù)組分為兩種類(lèi)型。它們?nèi)缦拢?/span>
一維數(shù)組
在c編程語(yǔ)言中,一維數(shù)組用于存儲(chǔ)相同數(shù)據(jù)類(lèi)型的值列表。換句話說(shuō),單一維數(shù)組用于存儲(chǔ)一行值。在單維數(shù)組中,數(shù)據(jù)以線性形式存儲(chǔ)。
一維數(shù)組的聲明:datatype arrayName [size];
示例代碼
int rollNumbers [60] ;
上述單維數(shù)組的聲明保留了60個(gè)連續(xù)的2個(gè)字節(jié)的存儲(chǔ)單元,每個(gè)存儲(chǔ)單元的名稱(chēng)為rollNumbers,并告訴編譯器只允許整數(shù)值進(jìn)入這些存儲(chǔ)單元。
一維數(shù)組的初始化
我們使用以下通用語(yǔ)法來(lái)聲明和初始化具有大小和初始值的單維數(shù)組。
datatype arrayName [size] = {value1,value2,...};
示例代碼
int marks [6] = { 89, 90, 76, 78, 98, 86 } ;
上述單維陣列聲明保留6個(gè)連續(xù)的2字節(jié)存儲(chǔ)位置,每個(gè)存儲(chǔ)位置帶有名稱(chēng)標(biāo)記,并在第一存儲(chǔ)位置初始化為值89,在第二存儲(chǔ)位置初始化為90,在第三存儲(chǔ)位置為76,在第四存儲(chǔ)位置為78,在98第五個(gè)內(nèi)存位置和第六個(gè)內(nèi)存位置86。
我們還可以使用以下通用語(yǔ)法初始化單維數(shù)組,而無(wú)需指定大小和初始值。
datatype arrayName [] = {value1,value2,...};
如果在未指定任何大小的情況下創(chuàng)建數(shù)組,則必須初始化該數(shù)組。在這種情況下,基于初始化的值的數(shù)量來(lái)確定陣列的大小。
示例代碼
int marks [] = { 89, 90, 76, 78, 98, 86 } ; char studentName [] = "btechsmartclass" ;
在上面的示例聲明中,數(shù)組'marks'的大小為6,數(shù)組'studentName'的大小為16。這是因?yàn)樵谧址麛?shù)組的情況下,編譯器在末尾存儲(chǔ)一個(gè)名為\ 0(NULL)的exttra字符。
訪問(wèn)單維數(shù)組的元素
在c編程語(yǔ)言中,要訪問(wèn)單維數(shù)組的元素,我們使用數(shù)組名稱(chēng),后跟要訪問(wèn)的元素的索引值。這里索引值必須用方括號(hào)括起來(lái)。數(shù)組中元素的索引值是在存儲(chǔ)器分配時(shí)給予每個(gè)元素的引用號(hào)。單維數(shù)組的索引值以第一個(gè)元素的零(0)開(kāi)始,并且每個(gè)元素的值增加一。數(shù)組中的索引值也稱(chēng)為下標(biāo)或索引。
我們使用以下一般語(yǔ)法來(lái)訪問(wèn)單維數(shù)組的各個(gè)元素:arrayName [indexValue]
示例代碼
marks [2] = 99 ;
在上面的語(yǔ)句中,'marks'數(shù)組的第三個(gè)元素被賦值為'99'。
多維數(shù)組
數(shù)組數(shù)組稱(chēng)為多維數(shù)組。簡(jiǎn)單來(lái)說(shuō),使用多個(gè)維度(大小)創(chuàng)建的數(shù)組稱(chēng)為多維數(shù)組。多維數(shù)組可以是二維數(shù)組或三維數(shù)組或四維數(shù)組或更多...
最常用和常用的多維數(shù)組是二維數(shù)組。二維數(shù)組用于以表格的形式存儲(chǔ)數(shù)據(jù)。我們還使用二維數(shù)組來(lái)創(chuàng)建數(shù)學(xué)矩陣。
二維數(shù)組聲明
我們使用以下通用語(yǔ)法來(lái)聲明二維數(shù)組:datatype arrayName [rowSize] [columnSize];
示例代碼
int matrix_A [2][3] ;
二維陣列儲(chǔ)量的形式的每個(gè)2個(gè)字節(jié)6個(gè)連續(xù)存儲(chǔ)器位置中的上面的聲明2行和3列。
二維陣列的初始化
我們使用以下通用語(yǔ)法來(lái)聲明和初始化具有特定行數(shù)和帶有初始值的coloumns的二維數(shù)組。
datatype arrayName [rows] [colmns] = {{r1c1value,r1c2value,...},{r2c1,r2c2,...} ...};
示例代碼
int matrix_A [2][3] = { {1, 2, 3},{4, 5, 6} } ;
上述二維陣列聲明以2行3列的形式保留6個(gè)連續(xù)的2個(gè)字節(jié)的存儲(chǔ)位置。并且第一行用值1,2和3初始化,第二行用值4,5和6初始化。
我們也可以初始化如下......
示例代碼
int matrix_A [2][3] = { {1, 2, 3}, {4, 5, 6} } ;
訪問(wèn)二維數(shù)組的單個(gè)元素
在ac編程語(yǔ)言中,為了訪問(wèn)二維數(shù)組的元素,我們使用數(shù)組名稱(chēng),后跟行索引值和要訪問(wèn)的元素的列索引值。這里行和列索引值必須用單獨(dú)的方括號(hào)括起來(lái)。在二維數(shù)組的情況下,編譯器為行和列分配單獨(dú)的索引值。
通用語(yǔ)法來(lái)訪問(wèn)二維數(shù)組的各個(gè)元素:arrayName [rowIndex] [columnIndex]
示例代碼
matrix_A [0][1] = 10 ;
在上面的語(yǔ)句中,具有行索引0和matrix_A數(shù)組的列索引1的元素被賦值為10。

數(shù)組在C語(yǔ)言中的應(yīng)用
在c語(yǔ)言中,數(shù)組用于廣泛的應(yīng)用程序。其中很少如下
●數(shù)組用于存儲(chǔ)值列表
在c語(yǔ)言中,單維數(shù)組用于存儲(chǔ)相同數(shù)據(jù)類(lèi)型的值列表。換句話說(shuō),單維數(shù)組用于存儲(chǔ)一行值。在單維陣列中,數(shù)據(jù)以線性形式存儲(chǔ)。
●數(shù)組用于執(zhí)行矩陣運(yùn)算
我們使用二維數(shù)組來(lái)創(chuàng)建矩陣。我們可以使用二維數(shù)組對(duì)矩陣執(zhí)行各種操作。
●數(shù)組用于實(shí)現(xiàn)搜索算法
我們使用單維數(shù)組來(lái)實(shí)現(xiàn)搜索算法
線性搜索
二進(jìn)制搜索
●數(shù)組用于實(shí)現(xiàn)排序算法
我們使用單維數(shù)組來(lái)實(shí)現(xiàn)排序算法
插入排序
冒泡排序
選擇排序
快速排序
合并排序等,
●數(shù)組用于實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)
我們使用單維數(shù)組來(lái)實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)

堆棧使用數(shù)組
隊(duì)列使用數(shù)組
●數(shù)組也用于實(shí)現(xiàn)CPU調(diào)度算法
這些內(nèi)容將會(huì)在數(shù)據(jù)結(jié)構(gòu)篇章中詳細(xì)講解

尾言
對(duì)于數(shù)組應(yīng)用在這里做個(gè)簡(jiǎn)單介紹,更多的內(nèi)容大家可以自行完善,或者等待更新,到時(shí)候會(huì)分類(lèi)給你們編寫(xiě)專(zhuān)欄介紹。
本章節(jié)作業(yè):使用C語(yǔ)言一維數(shù)組和二維數(shù)組實(shí)現(xiàn)以下表格數(shù)據(jù)的輸入和打印
只有投入才有回報(bào),只有忠誠(chéng)才有責(zé)任,只有主動(dòng)才有創(chuàng)新,沒(méi)有付出就沒(méi)有收獲。

