C語言中的陣列

2021-10-08 08:33:32 字數 1977 閱讀 3144

學習c語言,陣列很重要。陣列可以作為一種儲存多個相關項的便利方式。它可以按順序儲存一系列型別相同的值。需要使用陣列的時候,我們首先需要通過聲名陣列告訴編譯器陣列內包含多少元素和這些元素的型別。編譯器根據這些資訊正確的建立陣列。普通變數可以使用的型別,陣列元素都可以用。

/*一些常用的陣列宣告*/

float candy[

365]

;//內涵365個float型別元素的陣列

char code[12]

;//內含12個char型別元素的陣列

int states[50]

;//內含50個int型別元素的陣列

int* risks[10]

;//內含10個int指標型別元素的陣列

int(

* uof[3]

)[4]

;//內含3個指標元素的陣列,其中每個指標都指向乙個內含4個int型別元素的陣列

void

(*pf[3]

)(char*)

;//內含3個指標元素的陣列,其中每個指標都指向乙個引數為char *型別,返回值為void的函式

int test[5]

=;

如上所示,用逗號分隔的值列表(用花括號括起來)來初始化陣列,各值之間用逗號分隔,在逗號和值之間可以使用空格。

有時需要把陣列設定為唯讀。這樣,程式只能從陣列中檢索值,不能把新值寫入陣列。要建立唯讀陣列,應該用const關鍵字來宣告和初始化陣列。例如:

const

int days[12]

=;

通過上面的修改,程式在執行過程中就不能修改該陣列中的內容了。

非正常初始化可以大致分為三種

未初始化

如果未在定義陣列的時候初始化陣列元素,編譯器便會使用記憶體相應位置上的現有值作為預設值。

初始化部分

如果初始化的元素數量少於陣列的總數量,那麼未被初始化的元素會被初始化為0。

初始化過多

如果初始化的元素多於陣列的總數量,那麼編譯器便會報錯。

注:如果初始化陣列時省略了放括號中的數字,編譯器會根據初始化列表中的項數來確定陣列的大小

宣告了陣列元素以後,可以借助陣列下標(或索引)給陣列元素賦值。例如:

int counter,test[5]

;for

(counter=

0;counter<

5;counter++

)

需要注意的是c不允許陣列作為乙個單元賦給另乙個陣列,除初始化以外也不允許使用花括號列表的形式賦值。下面的**演示一些錯誤的賦值形式:

#define size  5

intmian

(void);

int yaks[size]

; yaks=oxen;

yaks[size]

=oxen[size];

yaks[size]=;

}

指標提供了一種以符號形式使用位址的方法。因為計算機的硬體指令非常依賴位址,指標在某種程度上把程式設計師想要傳達的指令更加接近機器的方式表達。因此,使用指標的程式更有效率。尤其是指標能夠有效的處理陣列。陣列表示法其實是變相的使用指標。

我們舉乙個變相使用指標的例子:陣列名是陣列首元素的位址。也就是是說如果test是乙個陣列,下面的語句成立:

test=

&test[0]

; test +2==

&test[2]

;*(test +2)

==test[2]

;

以上的關係表明了陣列和指標的關係十分密切,可以使用指標標識陣列的元素和獲得元素的值。從本質上看,同一物件有兩種表示法。實際上,c語言標準在描述陣列表示法時確實借助了指標。也就是說ar[n]的意思是*(ar+n)。可以認為*(ar+n)的意思是「到記憶體ar的位置,然後移動n個單元,檢索儲存在那裡的值」。

C語言中的陣列

c語言陣列 一 陣列的概念 用來儲存一組資料的構造資料型別 特點 只能存放一種型別的資料,如全部是int型或者全部是char型,陣列裡的資料成為元素。二 陣列的定義 格式 型別 陣列名 元素個數 舉例 儲存5個人的年齡 int agrs 5 在記憶體中開闢4x5 20個位元組的儲存空間 可以在定義陣...

C語言中的陣列

include stdio.h include string.h include stdlib.h int main 定義乙個可以存放十個int型資料的陣列 int parr null parr array array a printf d n array printf d n array 1 pr...

C語言中的陣列

一維陣列 1 陣列名 宣告 int a int b 10 a b 10 為陣列,它是一些值的集合。下標和陣列名一起使用,用於標識該集合中的某個特定的值。對於b來說,只有在兩種情況下,陣列名僅代表整個陣列,a 陣列名作為sizeof操作符的運算元 b 陣列名作為 的運算元 除此之外,陣列名代表陣列首元...