數組能夠說是目前爲止講到的第一個真正意義上存儲數據的結構。雖然前面學習的變量也能存儲數據,但變量所能存儲的數據頗有限。不只如此,數組和指針(後續會講)是相輔相成的,學習數組能夠爲學習指針打下基礎。程序員
那麼到底什麼是數組呢?顧名思義數組就是不少數的組合!那麼這些數有沒有什麼要求呢,是否是無論什麼數組合在一塊兒都是數組呢?同一數組中存儲的數必須知足如下兩個條件:面試
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];在內存中的存儲情形:blog
「數組內存是連續的」這一點很重要,因此我使用了一個大標題來強調。連續的內存爲指針操做(經過指針來訪問數組元素)和內存處理(整塊內存的複製、寫入等)提供了便利,這使得數組能夠做爲緩存(臨時存儲數據的一塊內存)使用。你們暫時可能不理解這句話是什麼意思,等後邊學了指針和內存天然就明白了。索引
對於數組的初始化須要注意如下幾點:
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++和算法的優質內容,學習交流,技術探討,面試指導,簡歷修改...還有超多源碼素材等學習資料,零基礎的視頻等着你!
還沒關注的小夥伴,能夠長按關注一下: