位置:首頁 > 高級語言 > 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的執行冇有邊界檢查的格式化參數。