Objective-C程式設計語言提供了一種叫作陣列的資料結構,它可以儲存相同型別的固定大小順序元素的集合。陣列用於儲存資料集合,但將陣列視為相同型別的變數集合通常更有用。
可以宣告一個陣列變數(例如numbers
)並使用numbers[0]
,numbers[1]
和...
,numbers[99]
來表示單個變數,例如:number0
,number1
,...
和number99
,而不是宣告單個變數。 使用索引來存取陣列中的特定元素。
所有陣列都包含連續的記憶體位置。 最低地址對應於第一個元素,最高地址對應於最後一個元素。
在Objective-C中宣告一個陣列,程式員需要指定元素的型別和陣列所需的元素數量,如下所示 -
type arrayName [ arraySize ];
這稱為一維陣列。 arraySize
必須是大於零的整數常數,type
可以是任何有效的Objective-C資料型別。 例如,要宣告一個名稱為balance
的double
型別的10
元素陣列,請使用此語句 -
double balance[10];
現在,balance
是一個變數陣列,最多可容納10
個double
型別。
可以逐個初始化Objective-C中的陣列,也可以使用單個語句,如下所示 -
double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
大括號{}
之間的值的數量不能大於在方括號[]
之間為陣列宣告的元素的數量。以下是分配陣列的單個元素的範例 -
如果省略陣列的大小,則會建立一個足以容納初始化的陣列。 因此,如果這樣寫 -
double balance[] = {1000.0, 2.0, 3.4, 17.0, 50.0};
這將建立與上一範例中完全相同的陣列。
balance[4] = 50.0;
上面的語句將陣列中的第5
元素賦值為50.0
。 具有第四個索引的陣列它擁有5
個元素,因為所有陣列都將0
作為第一個元素的索引,也稱為基本索引。 以下是上面討論的相同陣列的圖形表示 -
通過索引陣列名稱來存取元素。通過將元素的索引放在陣列名稱後面的方括號中來完成的。 例如 -
double salary = balance[9];
上面的語句將從陣列中取出第10
個元素,並將值賦給salary
變數。 以下是一個例子,它將使用上述所有三個概念,即陣列宣告,分配和存取陣列 -
#import <Foundation/Foundation.h>
int main () {
int n[ 10 ]; /* n 是10個整數的陣列 */
int i,j;
/* 從 n 到 0 初始化陣列的值 */
for ( i = 0; i < 10; i++ ) {
n[ i ] = i + 100; /* 從i 至 i + 100 設定陣列元素的值 */
}
/* 輸出每個陣列元素的值 */
for (j = 0; j < 10; j++ ) {
NSLog(@"Element[%d] = %d\n", j, n[j] );
}
return 0;
}
執行上面範例程式碼,得到以下結果:
2018-11-15 02:52:00.725 main[97171] Element[0] = 100
2018-11-15 02:52:00.727 main[97171] Element[1] = 101
2018-11-15 02:52:00.727 main[97171] Element[2] = 102
2018-11-15 02:52:00.727 main[97171] Element[3] = 103
2018-11-15 02:52:00.728 main[97171] Element[4] = 104
2018-11-15 02:52:00.728 main[97171] Element[5] = 105
2018-11-15 02:52:00.728 main[97171] Element[6] = 106
2018-11-15 02:52:00.728 main[97171] Element[7] = 107
2018-11-15 02:52:00.728 main[97171] Element[8] = 108
2018-11-15 02:52:00.728 main[97171] Element[9] = 109
陣列對Objective-C很重要,需要更多細節。 以下幾個與陣列相關的重要概念應該對Objective-C程式員清楚 -
編號 | 概念 | 描述 |
---|---|---|
1 | 多維陣列 | Objective-C支援多維陣列,多維陣列的最簡單形式是二維陣列。 |
2 | 將陣列傳遞給函式 | 通過指定不帶索引的陣列名稱來向函式傳遞指向陣列的指標。 |
3 | 從函式返回陣列 | Objective-C允許函式返回一個陣列。 |
4 | 指向陣列的指標 | 只需指定陣列名稱即可生成指向陣列第一個元素的指標,而無需任何索引。 |