c語言陣列定義(詳細)

2021-10-01 06:26:53 字數 1445 閱讀 5718

陣列:

什麼是陣列:變數的組合,是一種定義變數的手段。

定義:型別 陣列名[數量];

陣列定義後,預設值同樣不確定,因此也需要初始化。

int arr[5] <==> int num1,num2,num3,num4,num5;

使用:陣列名[編號]

編號 (下標) 從0開始,範圍[0,數量-1]

遍歷:配合for迴圈從頭到尾顯示,迴圈變數i就當做陣列的下標。

int arr[5];

for(int i=0;i<5;i++)

初始化:int arr[5] = ;

1、如果初始化資料不足補零。

2、如果初始化資料過多會丟棄,但是會產生警告

3、如果有初始化資料,可以省略陣列的長度,因為編譯器會統計陣列的個數,然後告訴陣列

4、只能給元素逐個賦值,不能給陣列整體賦值。

sizeof(arr):計算出陣列的總位元組數

sizeof(arr[0]):計算出陣列的第乙個元素的位元組數

計算陣列的長度:sizeof(arr)/sizeof(arr[0]);

二維陣列:

一維陣列可以看作把變數排成一排,二維陣列相當於把變數排成乙個方陣。

也可以認為二維陣列是由多個長度相等的一維陣列構成。

定義:型別 陣列名[行數][列數];

int arr[3][5];

使用:陣列[行號][列號];

行號和列號都是從0開始,範圍[0,數量-1];

arr[0][0] arr[0][1] arr[0][2] arr[0][3] arr[0][4]

arr[1][0] arr[1][1] arr[1][2] arr[1][3] arr[1][4]

arr[2][0] arr[2][1] arr[2][2] arr[2][3] arr[2][4]

遍歷:雙層for迴圈,外層迴圈負責行號,內層迴圈負責列號

初始化:

1、分段賦值

int arr[3][5]=,,};

2、連續賦值

int arr[3][5]=;

3、未賦值的元素自動補零

4、初始化時,行數可以省略,但是列數不可以。

int arr[5]=,,};

變長陣列:

什麼是變長陣列:指的是陣列在編譯期間長度還不確定,在執行期間可以發生變化,當執行到陣列定義語句的時候,陣列的長度就確定下來(一旦確定,不能改變)

優點:可以根據程式執行期間的實際需要,靈活設定陣列的長度,達到節省記憶體的目的。

缺點:不能初始化(因為陣列的初始化是在編譯的幫助下完成,但是變長陣列的長度在編譯期間還不確定,因此不能初始化)

陣列的越界:

在c語言中使用陣列時,是不對下標進行檢查的(檢查會浪費大量的時間,降低效率),陣列下標的正確完全靠程式設計師自覺。

陣列越界的後果:

1、一切正常

2、段錯誤

3、髒資料

C語言 陣列型別 詳細總結

對字 word 半字 half word 位元組 byte 的概念說明如下 1.字 word 在arm體系結構 32位機 中,字的長度為32位,而在8位 16位處理器體系結構中,字的長度一般為16位。2.半字 half word 在arm體系結構 32位機 中,半字的長度為16位,與8位 16位處理...

C語言定義動態陣列

今天在unbutu寫一道簡單的約瑟夫環的問題 有n個人,迴圈報數,報到3的人淘汰,求最後剩下的人,我就想定義乙個動態陣列來記錄他們是否被淘汰 如果淘汰了就把他對應陣列中的值改為0,淘汰n 1個人之後,陣列中值為1的人就是最後剩下的人。int n printf 請輸入總人數 n scanf d n i...

C語言 巨集定義 陣列

介紹1 巨集定義就是用乙個識別符號來表示乙個字串,如果後面 現了該識別符號,就全部替換成指定的字串 2 定義格式 define 巨集名 字串 巨集名是一種識別符號,遵從巨集定義命名規則 字串可以是數字,表示式,if語句,函式等,且不需要雙引號標記 3 在預處理階段,對程式 現所有巨集名,預處理器都會...