Objective-C教學
Objective-C 教學首頁
Objective-C 語言概述
Objective-C 開發環境(安裝配置)
Objective-C語言程序結構
Objective-C 基本語法
Objective-C 數據類型
Objective-C 變量
Objective-C 常量
Objective-C 運算符
Objective-C 算術運算符
Objective-C 關係運算符
Objective-C 邏輯運算符
Objective-C 位運算符
Objective-C 賦值運算符
Objective-C 循環
Objective-C while循環
Objective-C for循環
Objective-C do...while循環
Objective-C 嵌套循環
Objective-C break語句
Objective-C continue語句
Objective-C 決策
Objective-C if語句
Objective-C if...else 語句
Objective-C 嵌套 if 語句
Objective-C switch語句
Objective-C 嵌套switch語句
Objective-C 函數
Objective-C 函數按值調用
Objective-C 函數引用調用
Objective-C 塊
Objective-C Numbers/數字
Objective-C Arrays/數組
Objective-C 多維數組
Objective-C 數組作爲函數參數傳遞
Objective-C 從函數返回數組
Objective-C 指針的數組
Objective-C 指針
Objective-C 指針運算
Objective-C 數組的指針
Objective-C 指向指針的指針
Objective-C 傳遞函數的指針
Objective-C 函數返回指針
Objective-C NSString/字符串
Objective-C struct/結構
Objective-C 預處理器
Objective-C typedef
Objective-C 類型轉換
Objective-C 日誌處理
Objective-C 錯誤處理
命令行參數
Objective-C 類&對象
Objective-C 繼承
Objective-C 多態性
Objective-C 數據封裝
Objective-C Categories/類別
Objective-C Posing/冒充
Objective-C 擴展
Objective-C Protocols/協議
Objective-C 動態綁定
Objective-C 複合對象
Obj-C Foundation/基礎框架
Objective-C 數據存儲
Objective C 文本和字符串
Objective-C 日期和時間
Objective-C 異常處理
Objective-C 文件處理
Objective-C URL加載系統
Objective-C 快速枚舉
Objective-C 內存管理

Objective-C 指針的數組

這是最有可能的是,你可能不理解本章的內容,直到通過 Objective-C 中的指針相關的章節。

因此,假如你有一點認識,在Objective-C編程語言的指針,讓我們開始:數組名是一個常量指針數組的第一個元素。因此聲明:

double balance[50];

balance是一個指針,指向與平衡[0],這是數組balance 第一個元素的地址。因此,下面的程序片段分配p爲balance地址的第一個元素:

double *p; double balance[10]; p = balance;

它是合法的,使用數組名作爲常量指針,反之亦然。因此, *(balance + 4)是一種合法的方式訪問數據balance[4]。 

一旦儲存 p 中的第一個元素的地址,可以訪問數組元素使用 *p, *(p+1), *(p+2)等。下面的例子來說明上述討論的所有概念:

#import <Foundation/Foundation.h> int main () { /* an array with 5 elements */ double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; int i; p = balance; /* output each array element's value */ NSLog( @"Array values using yiibaier
"); for ( i = 0; i < 5; i++ ) { NSLog(@"*(p + %d) : %f
", i, *(p + i) ); } NSLog(@"Array values using balance as address
"); for ( i = 0; i < 5; i++ ) { NSLog(@"*(balance + %d) : %f
", i, *(balance + i) ); } return 0; }

上面的代碼編譯和執行時,它會產生以下結果:

2013-09-14 01:36:57.995 demo[31469] Array values using yiibaier
2013-09-14 01:36:57.995 demo[31469] *(p + 0) : 1000.000000
2013-09-14 01:36:57.995 demo[31469] *(p + 1) : 2.000000
2013-09-14 01:36:57.995 demo[31469] *(p + 2) : 3.400000
2013-09-14 01:36:57.995 demo[31469] *(p + 3) : 17.000000
2013-09-14 01:36:57.995 demo[31469] *(p + 4) : 50.000000
2013-09-14 01:36:57.995 demo[31469] Array values using balance as address
2013-09-14 01:36:57.995 demo[31469] *(balance + 0) : 1000.000000
2013-09-14 01:36:57.995 demo[31469] *(balance + 1) : 2.000000
2013-09-14 01:36:57.995 demo[31469] *(balance + 2) : 3.400000
2013-09-14 01:36:57.995 demo[31469] *(balance + 3) : 17.000000
2013-09-14 01:36:57.995 demo[31469] *(balance + 4) : 50.000000

在上面的例子中,p是一個指針,指向double,這意味着它可以存儲雙精度類型的變量地址。一旦我們有了p的地址,然後 *p 會給我們提供的地址存儲在p值,因爲我們已經在上面的例子顯示。