如果要將一維數組作為參數傳遞給函數,則必須以下列三種方式之一聲明函數形式參數,並且所有三種聲明方法都會產生類似的結果,因為每個都告訴編譯器接受一個整數指針。類似地,可以將多維數組作為形式參數傳遞。
方式-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
/* 函數聲明 */
-(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 () {
/* 一個擁有 5 個元素的數組 */
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
SampleClass *sampleClass = [[SampleClass alloc]init];
/* 將指針傳遞給數組作為參數 */
avg = [sampleClass getAverage:balance andSize: 5] ;
/* 輸出返回值 */
NSLog( @"Average value is: %f ", avg );
return 0;
}
執行上面示例代碼,得到以下結果:
2018-11-15 03:28:08.265 main[86840] Average value is: 214.400000
如上所見,就函數而言,數組的長度無關緊要,因為Objective-C不對形式參數執行邊界檢查。
上一篇:
Objective-C數組
下一篇:
Objective-C指針