在学习与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指针
												
						
						
					
					
					