當前位置:才華齋>計算機>C語言>

對C語言陣列的總結以及例項講解

C語言 閱讀(1.11W)

陣列(Array)是一系列相同型別的資料的集合,可以是一維的、二維的、多維的;最常用的是一維陣列和二維陣列,多維陣列較少用到

對C語言陣列的總結以及例項講解

  一、對陣列的總結

1) 陣列的定義格式為:

type arrayName[length]

type 為資料型別,arrayName 為陣列名,length 為陣列長度。 需要注意的是:

陣列長度 length 最好是整數或者常量表達式,例如 10、20*4 等,這樣在所有編譯器下都能執行通過;如果 length 中包含了變數,例如 n、4*m 等,在某些編譯器下就會報錯。

陣列在記憶體中佔用一段連續的空間,陣列名錶示的是這段記憶體空間的首地址。

2) 訪問陣列中某個元素的格式為:

arrayName[index]

index 為陣列下標。注意 index 的值必須大於等於零,並且小於陣列長度,否則會發生陣列越界,出現意想不到的錯誤。

3) 可以對陣列中的單個元素賦值,也可以整體賦值,例如:

// 對單個元素賦值

int a[3];

a[0] = 3;

a[1] = 100;

a[2] = 34;

// 整體賦值(不指明陣列長度)

float b[] = { 23.3, 100.00, 10, 0.34 };

// 整體賦值(指明陣列長度)

int m[10] = { 100, 30, 234 };

// 字元陣列賦值

char str1[] = "";

// 將陣列所有元素都初始化為0

int arr[10] = {0};

char str2[20] = {0};

  二、陣列應用舉例

【示例1】求一個整型陣列中的'最大值和最小值。

#include

int main(){

int a[10] = {0}, max, min, i;

//從控制檯獲取使用者輸入並賦值給陣列元素

for(i=0; i<10; i++){

scanf("%d", &a[i]);

}

//假設a[0]是最大值也是最小值

max = a[0], min = a[0];

for(i=1; i<10; i++){

if(a[i] > max){

max = a[i];

}

if(a[i] < min){

min = a[i];

}

}

printf("The max is %d, The min is %dn", max, min);

return 0;

}

  執行結果:

2 123 45 100 575 240 799 710 10 90↙

The max is 799, The min is 2

  這段程式碼有兩點需要說明:

1) 從控制檯獲取陣列元素時,我們一次性輸入10個整數才按下回車鍵,而不是每輸入一個整數就按一次回車鍵,這正是利用了標準輸入緩衝區。

2) 要想求得陣列中的最大值和最小值,就得迴圈比較陣列中的所有元素,並設定兩個變數 max 和 min 來接收。以最大值為例,開始迴圈之前,先假設第0個元素是最大值(當然你也可以假設第1、2、3 個元素),然後用 max 和陣列中剩餘的元素進行比較,如果某個元素的值比 max 大,就用這個元素的值替換 max 的值,等把所有元素遍歷完了,max 中就是最大值了。

  關於排序和查詢:

學完了陣列,有兩個重要的知識點要求大家掌握,那就是排序(Sort)和查詢(Search),比如:

給你 10 個打亂順序的整數,要能夠按照從小到大或者從大到小的順序輸出;

給定一個字串 str1,以及一個子串 str2,要能夠判斷 str2 是否在 str1 中。