Objective-C指標陣列

2019-10-16 23:14:59

在理解指標陣列的概念之前,先來看看以下範例,在這個範例中使用3個整數的陣列 -

#import <Foundation/Foundation.h>

const int MAX = 3;

int main () {
   int  var[] = {10, 100, 200};
   int i;

   for (i = 0; i < MAX; i++) {
      NSLog(@"Value of var[%d] = %d\n", i, var[i] );
   }
   return 0;
}

執行上面範例程式碼,得到以下結果:

2018-11-15 05:57:51.168 main[13412] Value of var[0] = 10
2018-11-15 05:57:51.170 main[13412] Value of var[1] = 100
2018-11-15 05:57:51.170 main[13412] Value of var[2] = 200

如果想要維護一個陣列,該陣列可以儲存指向intchar或任何其他可用資料型別的指標。 以下是一個指向整數的指標陣列的宣告 -

int *ptr[MAX];

這將ptr宣告為MAX整數指標的陣列。 因此,ptr中的每個元素現在都包含一個指向int型別值的指標。 下面的例子使用了三個整數,它們將儲存在一個指標陣列中,如下所示 -

#import <Foundation/Foundation.h>

const int MAX = 3;

int main () {
   int  var[] = {10, 100, 200};
   int i, *ptr[MAX];

   for ( i = 0; i < MAX; i++) {
      ptr[i] = &var[i];   /* 分配整數的地址. */
   }
   for ( i = 0; i < MAX; i++) {
      NSLog(@"Value of var[%d] = %d\n", i, *ptr[i] );
   }
   return 0;
}

執行上面範例程式碼,得到以下結果 -

2018-11-15 06:00:41.868 main[84495] Value of var[0] = 10
2018-11-15 06:00:41.870 main[84495] Value of var[1] = 100
2018-11-15 06:00:41.870 main[84495] Value of var[2] = 200

還可以使用指向字元的指標陣列來儲存字串列表,如下所示 -

#import <Foundation/Foundation.h>

const int MAX = 4;

int main () {
   char *names[] = {"Yiibai Su", "Hina Lee", "XNew Luang", "Kaops Ali",};
   int i = 0;
   for ( i = 0; i < MAX; i++) {
      NSLog(@"Value of names[%d] = %s\n", i, names[i] );
   }

   return 0;
}

執行上面範例程式碼,得到以下結果:

2018-11-15 06:02:10.526 main[126578] Value of names[0] = Yiibai Su
2018-11-15 06:02:10.528 main[126578] Value of names[1] = Hina Lee
2018-11-15 06:02:10.528 main[126578] Value of names[2] = XNew Luang
2018-11-15 06:02:10.528 main[126578] Value of names[3] = Kaops Ali