如果想在一個(gè)函數(shù)作為參數(shù),通過一維數(shù)組,就必須聲明函數(shù)形式參數(shù)之一以下三種方式,所有這三個(gè)聲明的方法產(chǎn)生類似的結(jié)果,因?yàn)槊總€(gè)都講述一個(gè)整數(shù)的指針是怎么被編譯器接收??梢酝ㄟ^類似的方式,格式化參數(shù)多維數(shù)組。
指針作為形式參數(shù)如下。我們將在下一章節(jié)學(xué)習(xí)指針。
- (void) myFunction(int *) param { . . . }
作為大小的數(shù)組形式參數(shù)如下:
- (void) myFunction(int [10] )param { . . . }
形式化參數(shù)作為未確定大小數(shù)組,如下所示:
-(void) myFunction: (int []) param { . . . }
現(xiàn)在,考慮下面的函數(shù),將數(shù)組作為參數(shù)隨著另一種說法的基礎(chǔ)上傳遞過來的參數(shù),它會返回平均通過數(shù)組的數(shù)字如下:
-(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; }
現(xiàn)在,讓我們調(diào)用上面的函數(shù)如下:
#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; }
當(dāng)上面的代碼一起編譯和執(zhí)行時(shí),產(chǎn)生以下結(jié)果:
2013-09-14 03:10:33.438 demo[24548] Average value is: 214.400000
正如上面看到,函數(shù)中數(shù)組的長度并不重要,因?yàn)镺bjective-C的執(zhí)行沒有邊界檢查的格式化參數(shù)。