Objective-C将指针传递给函数

Objective-C编程语言允许传递指针作为参数给函数。为此,只需将函数的参数声明为指针类型即可。

下面这个例子中,将一个unsigned long指针传递给一个函数并在函数内部的更改参数的值,它反映在调用的函数中 -

#import <Foundation/Foundation.h>

@interface SampleClass:NSObject
- (void) getSeconds:(int *)par;
@end

@implementation SampleClass

- (void) getSeconds:(int *)par {
   /* 获取当前秒数 */
   //*par = time( NULL );
   *par = 111;
   return;
}

@end

int main () {

   int sec=100;

   SampleClass *sampleClass = [[SampleClass alloc]init];
   [sampleClass getSeconds:&sec];

   /* 打印实际的值 */
   NSLog(@"Number of seconds: %d\n", sec );

   return 0;
}

执行上面示例代码,得到以下结果:

2018-11-15 06:23:36.731 main[14937] Number of seconds: 111

函数可以接受指针,也可以接受一个数组,如下例所示 -

#import <Foundation/Foundation.h>

@interface SampleClass:NSObject
/* function declaration */
- (double) getAverage:(int *)arr ofSize:(int) size;
@end

@implementation SampleClass

- (double) getAverage:(int *)arr ofSize:(int) size {
   int    i, sum = 0;       
   double avg;

   for (i = 0; i < size; ++i) {
      sum += arr[i];
   }

   avg = (double)sum / size;
   return avg;
}

@end

int main () {

   /* 定义一个有 5 个元素的数组 */
   int balance[5] = {99, 92, 93, 87, 90};
   double avg;

   SampleClass *sampleClass = [[SampleClass alloc]init];
   /* 将指针传递给数组作为参数 */
   avg = [sampleClass getAverage: balance ofSize: 5 ] ;

   /* 输出函数返回结果值  */
   NSLog(@"Average value is: %f\n", avg );

   return 0;
}

执行上面示例代码,得到以下结果:

2018-11-15 06:26:49.117 main[134265] Average value is: 92.200000

上一篇: Objective-C指针 下一篇: Objective-C字符串