Objective-C指向數組的指針

在學習與Objective-C中的指針相關的章節之前,您理解本章很可能有點吃力。

因此,在學習本節之前,我們假設您對Objective-C編程語言中的指針有一點瞭解。數組名稱是指向數組第一個元素的常量指針。 因此,在聲明中 -

double balance[50];

balance是指向&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 () {

   /* 一個擁有 5 個元素的數組 */
   double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
   double *p;
   int i;

   p = balance;

   /* 輸出數組中所有元素的值 */
   NSLog( @"Array values using pointer\n");
   for ( i = 0; i < 5; i++ ) {
      NSLog(@"*(p + %d) : %f\n",  i, *(p + i) );
   }

   NSLog(@"Array values using balance as address\n");
   for ( i = 0; i < 5; i++ ) {
      NSLog(@"*(balance + %d) : %f\n",  i, *(balance + i) );
   }

   return 0;
}

執行上面示例代碼,得到以下結果:

2018-11-15 03:49:56.217 main[177516] Array values using pointer
2018-11-15 03:49:56.220 main[177516] *(p + 0) : 1000.000000
2018-11-15 03:49:56.220 main[177516] *(p + 1) : 2.000000
2018-11-15 03:49:56.220 main[177516] *(p + 2) : 3.400000
2018-11-15 03:49:56.220 main[177516] *(p + 3) : 17.000000
2018-11-15 03:49:56.220 main[177516] *(p + 4) : 50.000000
2018-11-15 03:49:56.220 main[177516] Array values using balance as address
2018-11-15 03:49:56.220 main[177516] *(balance + 0) : 1000.000000
2018-11-15 03:49:56.220 main[177516] *(balance + 1) : 2.000000
2018-11-15 03:49:56.220 main[177516] *(balance + 2) : 3.400000
2018-11-15 03:49:56.220 main[177516] *(balance + 3) : 17.000000
2018-11-15 03:49:56.220 main[177516] *(balance + 4) : 50.000000

在上面的例子中,p是一個指向double的指針,它可以存儲double類型變數的地址。當在p中有地址,那麼*p將給出在p中存儲的地址可用的值,正如在上面的例子中所示的那樣。


上一篇: Objective-C數組 下一篇: Objective-C指針