陣列的基本概念
陣列可以說是目前為止講到的第一個真正意義上存盤資料的結構,雖然前面學習的變數也能存盤資料,但變數所能存盤的資料很有限,不僅如此,陣列和指標(后續會講)是相輔相成的,學習陣列可以為學習指標打下基礎,
那么到底什么是陣列呢?顧名思義陣列就是很多數的組合!那么這些數有沒有什么要求呢,是不是不管什么陣列合在一起都是陣列呢?同一陣列中存盤的數必須滿足以下兩個條件:
1)這些數的型別必須相同,
2)這些數在記憶體中必須是連續存盤的,
換句話說,陣列是在記憶體中連續存盤的具有相同型別的一組資料的集合,它所包含的每一個資料叫做陣列元素(Element),所包含的資料的個數稱為陣列長度(Length),例如int a[4];就定義了一個長度為4的整型陣列,名字是a,
陣列中的每個元素都有一個序號,這個序號從0開始,而不是從我們熟悉的1開始,稱為下標(Index),使用陣列元素時,指明下標即可,形式為:
arrayName[index]
arrayName 為陣列名稱,index 為下標,例如,a[0] 表示第0個元素,a[3] 表示第3個元素,
陣列記憶體是連續的
陣列是一個整體,它的記憶體是連續的;也就是說,陣列元素之間是相互挨著的,彼此之間沒有一點點縫隙,下圖演示了int a[4];在記憶體中的存盤情形:

「陣列記憶體是連續的」這一點很重要,所以我使用了一個大標題來強調,連續的記憶體為指標操作(通過指標來訪問陣列元素)和記憶體處理(整塊記憶體的復制、寫入等)提供了便利,這使得陣列可以作為快取(臨時存盤資料的一塊記憶體)使用,大家暫時可能不理解這句話是什么意思,等后邊學了指標和記憶體自然就明白了,
陣列的初始化
對于陣列的初始化需要注意以下幾點:
1) 可以只給部分元素賦值,當{ }中值的個數少于元素個數時,只給前面部分元素賦值,例如:
int a[10]={12, 19, 22 , 993, 344};
表示只給 a[0]~a[4] 5個元素賦值,而后面 5 個元素自動初始化為 0,
當賦值的元素少于陣列總體元素的時候,剩余的元素自動初始化為 0:
對于short、int、long,就是整數 0;
對于char,就是字符 '\0';
對于float、double,就是小數 0.0,
我們可以通過下面的形式將陣列的所有元素初始化為 0:
int nums[10] = {0};
char str[10] = {0};
float scores[10] = {0.0};
由于剩余的元素會自動初始化為 0,所以只需要給第 0 個元素賦值為 0 即可,
2) 只能給元素逐個賦值,不能給陣列整體賦值,例如給 10 個元素全部賦值為 1,只能寫作:
int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
而不能寫作:
int a[10] = 1;
3) 如給全部元素賦值,那么在定義陣列時可以不給出陣列長度,例如:
int a[] = {1, 2, 3, 4, 5};
等價于
int a[5] = {1, 2, 3, 4, 5};
最后,我們借助陣列來輸出一個 4×4 的矩陣:
#include<stdio.h>
intmain()
{
inta[4]={20,345,700,22};
intb[4]={56720,9999,20098,2};
intc[4]={233,205,1,6666};
intd[4]={34,0,23,23006783};
printf("%-9d %-9d %-9d %-9d\n",a[0],a[1],a[2],a[3]);
printf("%-9d %-9d %-9d %-9d\n",b[0],b[1],b[2],b[3]);
printf("%-9d %-9d %-9d %-9d\n",c[0],c[1],c[2],c[3]);
printf("%-9d %-9d %-9d %-9d\n",d[0],d[1],d[2],d[3]);
return0;
}
訪問陣列元素
陣列元素可以通過陣列名稱加索引進行訪問,元素的索引是放在方括號內,跟在陣列名稱的后邊,例如:
double salary = balance[9];
上面的陳述句將把陣列中第 10 個元素的值賦給 salary 變數,下面的實體使用了上述的三個概念,即,宣告陣列、陣列賦值、訪問陣列:
實體
#include <stdio.h> int main (){ int n[ 10 ]; /* n 是一個包含 10 個整數的陣列 */ int i,j;
/* 初始化陣列元素 */
for ( i = 0; i < 10; i++ ) { n[ i ] = i + 100; /* 設定元素 i 為 i + 100 */ }
/* 輸出陣列中每個元素的值 */ for (j = 0; j < 10; j++ ) { printf("Element[%d] = %d\n", j, n[j] );
}
return 0;}
當上面的代碼被編譯和執行時,它會產生下列結果:

C語言中陣列詳解
在 C 中,陣列是非常重要的,我們需要了解更多有關陣列的細節,下面列出了 C 程式員必須清楚的一些與陣列相關的重要概念:

關于陣列的基本認識就分享到這里了,關注小編,每天分享更多精彩內容哦!
最后,特別推薦一個分享C/C++和演算法的優質內容,學習交流,技術探討,面試指導,簡歷修改...還有超多原始碼素材等學習資料,零基礎的視頻等著你!
還沒關注的小伙伴,可以長按關注一下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266571.html
標籤:C
