變數只能儲存乙個單一的值。這一章節,我們將會討論一種具有可訪問多個變數能力的變數。
它的型別稱為陣列。
一維陣列
宣告陣列
data_type array_name[number_of_elements];
例如:int arr[1000], 這是宣告了乙個具有1000個int元素的陣列。可以想象如果c不支援集合變數,如果要宣告的話,我們只能宣告1000個不同的整型變數。
如果宣告乙個陣列的長度,最佳實踐是使用乙個巨集來代替。這樣的話,如果你想修改它,直接修改巨集即可,如:
#define size 100
float arr[size];
不像巨集一下,如果我們使用乙個const常量去指定長度的時候,例如下面的例子,它是非法的:
const int size = 150;
float arr[size]; /* illegal */
我們宣告乙個陣列,編譯器會分配記憶體空間去儲存元素的值。這些值被儲存在相互連續的記憶體空間。通常,記憶體空間被分配的區域稱為棧,當這個宣告的陣列結束時,它占用的記憶體被自動釋放。例如,有10個整型元素的陣列int arr[10],編譯器將會分配40bytes用來儲存這10個元素。
著這裡,一定有要注意陣列的邊界問題,int arr[10],那麼這個陣列有10個元素,第乙個元素下標是arr[0],最後乙個元素的下標是arr[9].如果我們寫了 arr[10] = 100,編譯器就會報錯。
陣列初始化
int arr[4] = ;
int a[10] = ;
意思是:
a[0] = 10
a[1] = 20
a[2] to a[9] 被設定為 0 .
int arr = ;
如果不寫陣列長度時,那麼此陣列就會根據賦值的個數來判斷size,此時的陣列等價寫法:
int arr[4] =
二維陣列
data_type array_name[number_of_rows][number_of_columns]
二維陣列的初始化:
int arr[3][3] = ;
arr[0][0] = 10
arr[0][1] = 20
arr[0][2] = 0
int arr[3] = ;
上面會被編譯器自動轉換成為,2行3列
int arr[3] = ;
此時會被轉換成3行3列
其實c語言只是支援一維陣列,二維陣列只是在形態上與一維陣列不同,事實上二維陣列也是和一維陣列一樣都是使用連續的記憶體空間。二維組的位址類似於基位址+偏移位址
c語言陣列
陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...
C語言陣列
在變數作函式引數時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發生改變後,實參並不變化,兩者的終值是不同的。而當用陣列名作函式引數時,情況則不同。由於實際上形參和實參為同一陣列,因此當形引數組發生變化時,實參陣列也隨之變化。當然這種情況不能理解...
C語言 陣列
陣列 void test1 for int i 0 i 5 i for int i 0 i 5 i 陣列資料倒序存放 void test2 printf 請輸入5個學生的成績 n for int i 4 i 0 i printf 輸出5個學生的成績 n for int i 0 i 5 i 將陣列的長...