c語言陣列
一、陣列的概念
用來儲存一組資料的構造資料型別
特點:只能存放一種型別的資料,如全部是int型或者全部是char型,陣列裡的資料成為元素。
二、陣列的定義
格式: 型別 陣列名[元素個數];
舉例:儲存5個人的年齡
int agrs[5]; //在記憶體中開闢4x5=20個位元組的儲存空間
可以在定義陣列的同時對陣列進行初始化:
int ages[5]=;
遍歷陣列:
for(int i=0;i<5;i++)
注意:(1)陣列的初始化
①. int ages[5]=;//一般寫法
②. int ages[5]=;//只對前兩個元素賦值
③. int ages[5]=;//對指定的元素賦值,這裡為第三個和第四個
④. int ages=.//正確,右邊的元素確定,則個數可以省略這裡為3個。
⑤. int ages;//錯誤,編譯器無法知道應該分配多少的儲存空間
⑥. int ages[5];ages=;//錯誤,只能在定義陣列時這樣進行初始化
⑦. int ages[『a』]=;//正確,相當於是ages[65]
⑧. int count=5;int ages[count];//如果不進行初始化,則這種寫法正確,編譯器不會報錯為其分配20個位元組的儲存空間,ages[0]=1;ages[1]=2;可以像這樣對陣列的元素進行賦值,但是2,3,4等元素的值時不確定的。
⑨. 而int count=5;int ages[count]=;//這種寫法是錯誤的,在定義陣列時對陣列進行初始化,元素的個數必須為常量或者不寫,不能是乙個變數
(2)計算陣列元素
當沒有表明陣列元素個數時,如何對其進行遍歷(要求使用陣列元素個數)?
可以使用sizeof運算子來計算陣列元素的個數
int count=sizeof(ages)/sizeof(int); //陣列的總長度除以單個的長度等於元素個數
三、陣列記憶體儲存細節
假設有陣列如下:
int x=;
char ca[5]=;
陣列名即代表陣列的位址,陣列的位址==陣列名(ca)==陣列的首元素的位址&ca[0]
在記憶體中,記憶體從大到小進行定址,為陣列分配了儲存空間後,陣列的元素自然的從上往下排列儲存,整個陣列的位址為首元素的位址。
模擬該陣列的記憶體儲存細節如下:
注意:字元在記憶體中是以對應ascii值的二進位制形式儲存的,而非上表的形式。
在這個例子中,陣列x的位址為它的首元素的位址0x08,陣列ca的位址為0x03。
四、陣列-傳址呼叫
void change(int array) //陣列可以作為函式的形參,可以省略陣列元素的個數
void change2(int a) //基本型別作為函式的形參
int main() ;
change2(ages[0]);
change(ages);
return 0; }
array陣列與ages陣列的位址一致,若以陣列作為函式的引數,這種傳遞方式是傳址呼叫,傳遞的是整個陣列的位址,修改形引數組元素的值,就是修改實參的值。
當你把乙個陣列當做引數來傳遞時,它會看做是乙個指標,在該函式體內使用sizeof運算子來計算陣列的長度,得出的數值永遠為8,而非陣列的實際長度,因為任何型別的指標都佔8個位元組的儲存空間。
如 void maxofarray(int array,sizeof(ages)/sizeof(int))
五、二維陣列
int ages[50];//陣列能夠存放50個int型別的資料
int ages1[3][10];//陣列能夠存放3個陣列,每個陣列存放10個數值,共3x10=30個述職數值。
乙個二維陣列a,a包括兩個一維陣列a[0]和a[1],每個一維陣列都包括三個元素。
使用場合:五子棋,俄羅斯方塊等,
假設:char y[3][2]=, ,
};記憶體情況:
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 將陣列的長...