更新時(shí)間:2020-05-07 來(lái)源:黑馬程序員 瀏覽量:
一維數(shù)組的定義與初始化
一維數(shù)組指的是只有一個(gè)下標(biāo)的數(shù)組,它用來(lái)表示一組具有相同類型的數(shù)據(jù)。在C語(yǔ)言中,一維數(shù)組的定義方式如下所示:
類型說(shuō)明符 數(shù)組名[常量表達(dá)式];
在上述語(yǔ)法格式中,類型說(shuō)明符表示數(shù)組中所有元素的類型,常量表達(dá)式指的是數(shù)組的長(zhǎng)度,也就是數(shù)組中存放元素的個(gè)數(shù)。
例
int array[5l;
上述代碼定義了一個(gè)數(shù)組,其中,int是數(shù)組的類型,aray是數(shù)組的名稱,方括號(hào)中的5是數(shù)組的長(zhǎng)度。完成數(shù)組的定義后,只是對(duì)數(shù)組中的元素開辟了一塊內(nèi)存空間。這時(shí),如果想使用數(shù)組操作數(shù)據(jù),還需要對(duì)數(shù)組進(jìn)行初始化。數(shù)組初始化的常見的方式有3種,具體如下
(1)直接對(duì)數(shù)組中的所有元素賦值,示例代碼如下:
int i[5]={1,2,3,4,5};
上述代碼定義了一個(gè)長(zhǎng)度為5的數(shù)組i,并且數(shù)組中元素的值依次為1、2、3、4、5。
(2)只對(duì)數(shù)組中的一部分元素賦值,示例代碼如下
int i[5]={1,2,3};
在上述代碼中,定義了一個(gè)int類型的數(shù)組,但在初始化時(shí),只對(duì)數(shù)組中的前3個(gè)元素進(jìn)行了賦值,其他元素的值會(huì)被默認(rèn)設(shè)置為
(3)對(duì)數(shù)組全部元素賦值,但不指定長(zhǎng)度,示例代碼如下:
int i[]={1,2,3,4};
在上述代碼中,數(shù)組i中的元素有4個(gè),系統(tǒng)會(huì)根據(jù)給定初始化元素的個(gè)數(shù)定義數(shù)組的長(zhǎng)度,因此,數(shù)組i的長(zhǎng)度為4。
注意
(1)數(shù)組的下標(biāo)是用方括號(hào)括起來(lái)的,而不是圓括號(hào);
(2)數(shù)組名的命名同變量名的命名規(guī)則相同;
(3)數(shù)組定義中,常量表達(dá)式的值可以是符號(hào)常量,如下面的定義就是合法的。
int a[N]; //假設(shè)預(yù)編譯命令#define N 4,下標(biāo)是符號(hào)常量
一維數(shù)組的引用
在程序中,經(jīng)常需要訪問(wèn)數(shù)組中的一些元素,這時(shí)可以通過(guò)數(shù)組名和下標(biāo)來(lái)引用數(shù)組中
的元素。一維數(shù)組元素的引用方式如下所示:
數(shù)組名 [下標(biāo)];
在上述方式中,下標(biāo)指的是數(shù)組元素的位置,數(shù)組元素的下標(biāo)是從0開始的。例如,引用數(shù)組X的第3個(gè)元素的方式為X[2]為了幫助大家更好地理解數(shù)組元素的引用榜下業(yè)通計(jì)一個(gè)室例來(lái)演示,如下所示:
#include<stdio.h>
void main(int argc, char *argv[]){
int x[5] = {2,3,1,4,6};
int i;
for (i = 0; i < 5; i++) {
printf("%d\n", 2 * x[i]);
}
}
運(yùn)行結(jié)果若下圖所示:
在上面案例中,首先定義了一個(gè)數(shù)組x,然后通過(guò)下標(biāo)的形式獲取到數(shù)組中的元素,最后將元素乘以2后輸出。
注意
數(shù)組的下標(biāo)都有一個(gè)范圍,即“0~[數(shù)組長(zhǎng)度-1]”,假設(shè)數(shù)組的長(zhǎng)度為6,其下標(biāo)范圍為0~5。當(dāng)訪問(wèn)數(shù)組中的元素時(shí),下標(biāo)不能超出這個(gè)范圍,否則程序會(huì)報(bào)錯(cuò)。
一維數(shù)組的常見操作
數(shù)組在編寫程序時(shí)應(yīng)用非常廣泛,如經(jīng)常需要對(duì)數(shù)組進(jìn)行遍歷、獲取最值、排序等操作靈活地使用數(shù)組對(duì)實(shí)際開發(fā)很重要。接下來(lái)針對(duì)一維數(shù)組的常見操作進(jìn)行詳細(xì)的講解,具體如下。
1、一維數(shù)組的遍歷
在操作數(shù)組時(shí),經(jīng)常需要依次訪問(wèn)數(shù)組中的每個(gè)元素,這種操作稱作數(shù)組的遍歷。接下來(lái)使用for循環(huán)依次遍歷數(shù)組中的元素,如下所示:
#include<stdio.h>
void main(int argc, char *argv[]){
int x[5] = {2,3,1,4,6};
int i = 0;
for (i = 0; i < 5; i++) {
printf("x[%d]:%d\n", i, x[i]);
}
}
運(yùn)行結(jié)果如下:
在上面案例中,首先定義了一個(gè)長(zhǎng)度為5的數(shù)組X,然后定義了一個(gè)變量,由于數(shù)組的下標(biāo)范圍為0-4,因此可以將i的值作為下標(biāo),依次去訪問(wèn)數(shù)組中的元素,并將元素的值輸出。
2、一維數(shù)組的最值
在操作數(shù)組時(shí),經(jīng)常需要獲取數(shù)組中元素的最值。接下來(lái)通過(guò)案例演示如何獲得數(shù)組中最大的數(shù)值。
#include<stdio.h>
int main(int argc, char *argv[]){
int x[5] = {2,3,1,4,6};
int nMax = x[0];
int i = 0;
for (i = 0; i < 5; i++) {
if (x[i] > nMax) {
nMax = x[i];
}
}
printf("max:%d\n", nMax);
return 0;
}
運(yùn)行結(jié)果如下
在上面案例找那個(gè)實(shí)現(xiàn)了獲取數(shù)組X最大值的功能。在第5行代碼中假定數(shù)組中的第1個(gè)元素為最大值,并將其賦值給nMax,在第7~13行代碼對(duì)數(shù)組中的其他元素進(jìn)行遍歷,如果發(fā)現(xiàn)比mMax值大的元素,就將最大值nMx設(shè)置為這個(gè)元素的值,這樣,當(dāng)數(shù)組遍歷完成后,nMax中存儲(chǔ)的就是數(shù)組中的最大值。
3、一維數(shù)組的排序
在操作數(shù)組時(shí),經(jīng)常需要對(duì)數(shù)組中的元素進(jìn)行排序。接下來(lái)為大家介紹一種比較常見的排序算法一冒泡排序。在冒泡排序的過(guò)程中,不斷地比較數(shù)組中相鄰的兩個(gè)元素,較小者向上浮、較大者往下沉,整個(gè)過(guò)程和水中氣泡上升的原理相似,接下來(lái),分步驟講解冒泡排序的整個(gè)過(guò)程,具體如下。
第1步,從第1個(gè)元素開始,將相鄰的兩個(gè)元素依次進(jìn)行比較,直到最后兩個(gè)元素完成比較。如果前1個(gè)元素比后1個(gè)元素大,則交換它們的位置。整個(gè)過(guò)程完成后,數(shù)組中最后1個(gè)元素自然就是最大值,這樣也就完成了第1輪的比較。
第2步,除了最后1個(gè)元素,將剩余的元素繼續(xù)進(jìn)行兩兩比較,過(guò)程與第1步相似,這樣就可以將數(shù)組中第二大的數(shù)放在倒數(shù)第2個(gè)位置。
第3步,依次類推,持續(xù)對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)元素需要比較為止。
了解了冒泡排序的原理之后,接下來(lái)通過(guò)一個(gè)案例來(lái)實(shí)現(xiàn)冒泡排序。
#include<stdio.h>
void main(int argc, char ** argv[]){
int arr[5] = { 9,8,3,5,2 };
int temp = 0;
int i, j;
printf("冒泡排序前:\n");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
for (i = 0; i < 5 - 1; i++) {
for (j = 0; j < 5 - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("冒泡排序后:\n");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
在上面的案例中,通過(guò)嵌套for循環(huán)實(shí)現(xiàn)了冒泡排序。其中,外層循環(huán)用來(lái)控制進(jìn)行多少輪比較,每一輪比較都可以確定1個(gè)元素的位置,由于最后1個(gè)元素不需要進(jìn)行比較,因此,外層循環(huán)的次數(shù)為數(shù)組的長(zhǎng)度-1,內(nèi)層循環(huán)的循環(huán)變量用于控制每輪比較的次數(shù),在每次比較時(shí),如果前者小于后者,就交換兩個(gè)元素的位置。下面通過(guò)一張動(dòng)圖來(lái)演示冒泡排血的運(yùn)算過(guò)程。
以上我們介紹了C++一維數(shù)組的常見操作,希望對(duì)您有所幫助,如果通過(guò)學(xué)習(xí)C++快速提升自己找到工作,可以了解黑馬程序員C++培訓(xùn)課程。
猜你喜歡