C語言之陣列總結

2021-08-19 22:51:46 字數 3080 閱讀 7168

陣列在c語言中有著特殊的地位,它有很多特性,例如它的儲存是連續的,

陣列的名稱

就是陣列的位址

等。1.注意:

1.陣列長度必須是固定的,必須為常量或常量表示式(2+1,2*3)或者不寫,不能使用

變數進行初始化。

int len = 2;

int a[len] = ;//錯誤,不能使變數

2.如果宣告的同時進行賦值則長度可以忽略,編譯器會自動計算素組長度。

int b = ;

//如果初始化的同時賦值則陣列長度可以省略,當前長度個數為3

3.陣列不能先宣告再一次性賦值.(

當然可以對每乙個元素一一賦值)

//錯誤:

int len[2]; //len == &len[0]第乙個元素的位址就是整個陣列的位址,

len = ; //len是陣列名,代表陣列的位址,也是個常量,給常量賦值肯定是錯的。

len[2] = ; // 錯誤,代表著陣列第3個元素,這裡已經陣列下標越界了,就算沒有越界,應該賦值int型別不應該是{}.

//正確:

int c[2];

c[0] = 1;

c[1] = 2;

c[2] = 3;//超過陣列長度,但是編譯器並不會檢查,執行報錯,陣列遍歷從下標0開始遍歷,元素不能超過長度,否則陣列越界.;

4.在計算機中,遍歷一般是從0開始遍歷, 陣列長度就是跟現實生活一樣從1開始.

int b['a'] = ;//'a'=97,所以可以作為陣列長度,但是後面的元素沒有初始化,其值預設為0

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

5.只能存放一種型別的資料,如全部是int型或者全部是char型,陣列裡的資料成為元素.

剛剛上面說了,知道 陣列型別 和 陣列名(等於第乙個元素的位址) 就可以知道其他元素的位址.即第乙個元素的位址就是整個陣列的位址

#include int main();

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

/*當前輸出結果:

額外:陣列名代表著整個陣列的位址,如果一維陣列的名字作為函式實參,傳遞的是整個陣列,即形引數組和實參陣列完全等同,是存放在同一儲存空間的同乙個陣列。這樣形引數組修改時,實參陣列也同時被修改了

#include //形參

void changevalue(int a)

int main();

changevalue(a); //實參

for (int i = 0; i < 2; ++i) /*列印結果

a[0]=10

a[1]=2*/}

如果把一位陣列的元素(a[0])作為函式的實參,只是把元素的值傳給形參,形參不會改變實參

二位陣列是乙個特殊的一維陣列,它的元素是一位陣列.

例如int a[2][3]可以看作由一維陣列a[0]和一維陣列a[1]組成,這兩個一維陣列都包含了長度為3的int型別3個元素

* 二維陣列的存放順序是按行存放的,先存放第一行的元素,再存放第2行的元素。例如int a[2][3]的存放順序是:a[0][0] → a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]

#include int main()

}/*列印結果

a[0][0]=1,address=f8fb24

a[0][1]=2,address=f8fb28

a[0][2]=3,address=f8fb2c

a[1][0]=4,address=f8fb30

a[1][1]=5,address=f8fb34

a[1][2]=6,address=f8fb38

*///初始化並直接賦值

int b[2][3] = , };

//由於陣列的賦值順序是先從第一行第一列,再第一行第二列...然後第二行第一列...,所以我們也可以寫成如下形式

int c[2][3] = ;

//也可以只初始化部分資料,其餘元素預設為0

int d[2][3] = ;

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

}/*列印結果

d[0][0]=1

d[0][1]=2

d[0][2]=3

d[1][0]=4

d[1][1]=0

d[1][2]=0

*///當然下面賦值也可以

int e[2][3] = , };

//可以省略行號,但是絕對不可以省略列號,因為按照上面說的賦值順序,它無法判斷有多少行

int f[3] = , };

}

儲存記憶體:

a[0]、a[1],也是陣列,是一維陣列, 而且a[0]、a[1]就是陣列名,因此a[0]、a[1]就代表著這個一維陣列的位址.

1> 陣列a的位址是f8fb24,陣列a[0]的位址也是f8fb24,即a = a[0];

2> 元素a[0][0]的位址是f8fb24,所以 陣列a[0]的位址 和 元素a[0][0]的位址 相同,即a[0] = &a[0][0];

3> 最終可以得出結論:a = a[0] = &a[0][0],以此類推,可以得出a[1] = &a[1][0]

C語言之指標與陣列總結

和指標相關的問題 口訣1 1.位址變數得位址,得誰位址指向誰 和指標相關的問題要畫圖 內容變數畫房子,指標畫箭頭 口 一 取位址運算子,通過 運算子可以取出普通變數的位址 二 有兩種意義 1.為指標標誌 是否為指標標誌主要看前面是否有型別,此處有乙個int 2.為指標運算子 在等號右面為取值。可以取...

C語言之陣列

c語言之陣列 一,一維陣列 1,一維陣列的定義 型別符 陣列名 常量表示式 注 1 常量表示式中可以包括常量和符號常量.int a 3 5 是合法的,int a n 是不合法的,c語言不允許對陣列的大小作動態定義 2 如果在被呼叫的函式 不包括主函式 中定義陣列,起長度可以是變數或非常量表示式,可稱...

C語言之陣列

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