IOS之C語言 8陣列

2021-07-30 14:59:58 字數 2126 閱讀 8793

一、陣列的概念

用來儲存一組資料的構造資料型別

特點:只能存放一種型別的資料,如全部是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]=, ,

}; 記憶體情況:

iOS之C語言指標,陣列小結

int num 10 int p num 指標是乙個比較特別的變數,它裡面儲存的值可以被解釋為是乙個記憶體的位址,上面的例子p就是這個指標名,指標的型別是int 跟num一樣,num裡存的是int型別的數,只不過p裡存的是int型別數的位址。所以說指標就是位址,位址就是指標。p中的 是操作符表示指向...

IOS基礎 C語言學習之陣列

一 陣列的基本概念 1.什麼是陣列 陣列,從字面上看,就是一組資料的意思,沒錯,陣列就是用來儲存一組資料的 2.陣列的特點 1 只能存放一種型別的資料,比如int型別的陣列 float型別的陣列 2 裡面存放的資料稱為 元素 二 陣列的定義 1.定義 想要定義乙個陣列,需要宣告兩點 宣告陣列的型別 ...

C語言(8) 合併陣列

題目 給定含有n個元素的兩個有序 非降序 整型陣列a和b,合併兩個陣列中的元素到整型陣列c,要求刪除重複的元素兵保持c有序 非降序 正確 void merge int a,int b,int c,int m,int n,int qwe c為合併後陣列 else if i m 陣列a先遍歷完畢,將b中...