位置:首页 > 高级语言 > Objective-C在线教程 > Objective-C 数组作为函数参数传递

Objective-C 数组作为函数参数传递

如果想在一个函数作为参数,通过一维数组,就必须声明函数形式参数之一以下三种方式,所有这三个声明的方法产生类似的结果,因为每个都讲述一个整数的指针是怎么被编译器接收。可以通过类似的方式,格式化参数多维数组。

方式-1

指针作为形式参数如下。我们将在下一章节学习指针。

- (void) myFunction(int *) param
{
.
.
.
}

方式-2

作为大小的数组形式参数如下:

- (void) myFunction(int [10] )param
{
.
.
.
}

方式-3

形式化参数作为未确定大小数组,如下所示:

-(void) myFunction: (int []) param
{
.
.
.
}

例子

现在,考虑下面的函数,将数组作为参数随着另一种说法的基础上传递过来的参数,它会返回平均通过数组的数字如下:

-(double) getAverage:(int []) arr andSize:(int) size
{
  int    i;
  double avg;
  double sum;

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

  avg = sum / size;

  return avg;
}

现在,让我们调用上面的函数如下:

#import <Foundation/Foundation.h>
 
@interface SampleClass:NSObject

/* function declaration */
-(double) getAverage:(int []) arr andSize:(int) size;

@end

@implementation SampleClass

-(double) getAverage:(int []) arr andSize:(int) size
{
  int    i;
  double avg;
  double sum =0;

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

  avg = sum / size;

  return avg;
}

@end

int main ()
{
   /* an int array with 5 elements */
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;
   
   SampleClass *sampleClass = [[SampleClass alloc]init];
   /* pass yiibaier to the array as an argument */
   avg = [sampleClass getAverage:balance andSize: 5] ;
 
   /* output the returned value */
   NSLog( @"Average value is: %f ", avg );
    
   return 0;
}

当上面的代码一起编译和执行时,产生以下结果:

2013-09-14 03:10:33.438 demo[24548] Average value is: 214.400000 

正如上面看到,函数中数组的长度并不重要,因为Objective-C的执行没有边界检查的格式化参数。