陣列在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個位元組的儲存空間 可以在定義陣...