C語言數組

 

C語言數組數組

1、數組的概念函數

用來存儲一組數據的構造數據類型指針

特色:只能存放一種類型的數據,如所有是int型或者所有是char型,數組裏的數據成爲元素。blog

 

2、數組的定義內存

格式: 類型 數組名[元素個數];編譯器

舉例:存儲5我的的年齡編譯

Int agrs[5]; //在內存中開闢4x5=20個字節的存儲空間class

能夠在定義數組的同時對數組進行初始化:變量

Int ages[5]={17,18,19,20,21};遍歷

遍歷數組:

For(int i=0;i<5;i++)

{

Printf(「ages[%d]=%d\n」,i,ages[i]);

}

注意:

(1)數組的初始化

①. Int ages[5]={17,18,19,20,21};//通常寫法

②. Int ages[5]={17,18};//只對前兩個元素賦值

③. Int ages[5]={[3]=10,[4]=11};//對指定的元素賦值,這裏爲第三個和第四個

④. Int ages[]={11,12,13}.//正確,右邊的元素肯定,則個數能夠省略這裏爲3個。

⑤. Int ages[];//錯誤,編譯器沒法知道應該分配多少的存儲空間

⑥. Int ages[5];ages={17,18,19,20,21};//錯誤,只能在定義數組時這樣進行初始化

⑦. Int ages[‘A’]={1,2,3};//正確,至關因而ages[65]

⑧. Int count=5;int ages[count];//若是不進行初始化,則這種寫法正確,編譯器不會報錯爲其分配20個字節的存儲空間,ages[0]=1;ages[1]=2;能夠像這樣對數組的元素進行賦值,可是2,3,4等元素的值時不肯定的。

⑨. 而int count=5;int ages[count]={1,2,3,4,5};//這種寫法是錯誤的,在定義數組時對數組進行初始化,元素的個數必須爲常量或者不寫,不能是一個變量

 

(2)計算數組元素

當沒有代表數組元素個數時,如何對其進行遍歷(要求使用數組元素個數)?

可使用sizeof運算符來計算數組元素的個數

Int count=sizeof(ages)/sizeof(int); //數組的總長度除以單個的長度等於元素個數

 

3、數組內存存儲細節

假設有數組以下:

Int x[]={1,2};

Char ca[5]={‘a’,‘A’,‘B’,‘C’,‘D’};

數組名即表明數組的地址,數組的地址==數組名(ca)==數組的首元素的地址&ca[0]

在內存中,內存從大到小進行尋址,爲數組分配了存儲空間後,數組的元素天然的從上往下排列存儲,整個數組的地址爲首元素的地址。

模擬該數組的內存存儲細節以下:

 

注意:字符在內存中是以對應ASCII值的二進制形式存儲的,而非上表的形式。

在這個例子中,數組x的地址爲它的首元素的地址0x08,數組ca的地址爲0x03。

 

4、數組-傳址調用

Void change(int array[]) //數組能夠做爲函數的形參,能夠省略數組元素的個數

{

Array[0]=100;

}

 

Void change2(int a)  //基本類型做爲函數的形參

{

a=200;

}

 

Int main()

{

Int ages[5]={1,2,3,4,5};

Change2(ages[0]);

Change(ages);

Return 0;

}

Array數組與ages數組的地址一致,若以數組做爲函數的參數,這種傳遞方式是傳址調用,傳遞的是整個數組的地址,修改形參數組元素的值,就是修改實參的值。

當你把一個數組當作參數來傳遞時,它會看作是一個指針,在該函數體內使用sizeof運算符來計算數組的長度,得出的數值永遠爲8,而非數組的實際長度,由於任何類型的指針都佔8個字節的存儲空間。

提示:數組做爲一個函數的參數時,若是函數體涉及到數組遍歷等操做,一般把數組的實際元素個數也做爲參數傳遞給函數。

如 void maxofarray(int array[],sizeof(ages)/sizeof(int)){....}

 

5、二維數組

Int ages[50];//數組可以存放50個int類型的數據

Int ages1[3][10];//數組可以存放3個數組,每一個數組存放10個數值,共3x10=30個述職數值。

 

一個二維數組a,a包括兩個一維數組a[0]和a[1],每一個一維數組都包括三個元素。

使用場合:五子棋,俄羅斯方塊等,

假設:

char Y[3][2]={

{‘A’,‘B’},

{‘C,‘D’},

{‘E,‘F’}

};

內存狀況:

 

相關文章
相關標籤/搜索