Objective-C編程語言允許傳遞指針作為參數給函數。為此,只需將函數的參數聲明為指針類型即可。
下麵這個例子中,將一個unsigned long指針傳遞給一個函數並在函數內部的更改參數的值,它反映在調用的函數中 -
#import <Foundation/Foundation.h>
@interface SampleClass:NSObject
- (void) getSeconds:(int *)par;
@end
@implementation SampleClass
- (void) getSeconds:(int *)par {
   /* 獲取當前秒數 */
   //*par = time( NULL );
   *par = 111;
   return;
}
@end
int main () {
   int sec=100;
   SampleClass *sampleClass = [[SampleClass alloc]init];
   [sampleClass getSeconds:&sec];
   /* 列印實際的值 */
   NSLog(@"Number of seconds: %d\n", sec );
   return 0;
}
執行上面示例代碼,得到以下結果:
2018-11-15 06:23:36.731 main[14937] Number of seconds: 111
函數可以接受指針,也可以接受一個數組,如下例所示 -
#import <Foundation/Foundation.h>
@interface SampleClass:NSObject
/* function declaration */
- (double) getAverage:(int *)arr ofSize:(int) size;
@end
@implementation SampleClass
- (double) getAverage:(int *)arr ofSize:(int) size {
   int    i, sum = 0;
   double avg;
   for (i = 0; i < size; ++i) {
      sum += arr[i];
   }
   avg = (double)sum / size;
   return avg;
}
@end
int main () {
   /* 定義一個有 5 個元素的數組 */
   int balance[5] = {99, 92, 93, 87, 90};
   double avg;
   SampleClass *sampleClass = [[SampleClass alloc]init];
   /* 將指針傳遞給數組作為參數 */
   avg = [sampleClass getAverage: balance ofSize: 5 ] ;
   /* 輸出函數返回結果值  */
   NSLog(@"Average value is: %f\n", avg );
   return 0;
}
執行上面示例代碼,得到以下結果:
2018-11-15 06:26:49.117 main[134265] Average value is: 92.200000
					
						上一篇:
								Objective-C指針
												下一篇:
								Objective-C字串
					
					