C語言進階丨(七)數組的基本概念和初始化【1】


數組的基本概念

數組可以說是目前為止講到的第一個真正意義上存儲數據的結構。雖然前面學習的變量也能存儲數據,但變量所能存儲的數據很有限。不僅如此,數組和指針(后續會講)是相輔相成的,學習數組可以為學習指針打下基礎。

那么到底什么是數組呢?顧名思義數組就是很多數的組合!那么這些數有沒有什么要求呢,是不是不管什么數組合在一起都是數組呢?同一數組中存儲的數必須滿足以下兩個條件:

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++和算法的優質內容,學習交流,技術探討,面試指導,簡歷修改...還有超多源碼素材等學習資料,零基礎的視頻等着你!

還沒關注的小伙伴,可以長按關注一下:


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM