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的執行冇有邊界檢查的格式化參數。