#import <Foundation/Foundation.h>
@interface VarArgs : NSObject
- (void)test:(NSString *)name,...;
- (int)test2:(int)num1,...;
@end
@implementation VarArgs
- (void)test:(NSString *)name, ...
{
va_list arglist;//定義一個va_list指針變量,指向參數列表
if(name)
{
NSLog(@"%@",name);
va_start(arglist, name);//讓arglist指向可變參數列表的第一個參數,開始提取可變參數列表的參數
NSString *arg = va_arg(arglist, NSString*);//提取當前arglist指向的參數,並移動指針,指向一個參數
while(arg)//循環提取參數,直到參數nil
{
NSLog(@"%@",arg);
arg = va_arg(arglist, NSString *);
}
va_end(arglist);//釋放arglist指針,結束提取
}
}
//可變參數中,核心的:va_list : 可變參數列表的指針
// va_start : 指向參數列表的第一個參數
// va_arg(va_list, type),提取參數,並指向下一個參數
// va_end 結束提取,釋放指針
- (int)test2:(int)num1,...
{
va_list numList;
va_start(numList, num1);
int sum = 0;
sum += num1;
int a = va_arg(numList, int);
while(a)
{
sum += a;
a = va_arg(numList, int);
}
//NSLog(@"%d",sum);
va_end(numList);
return sum;
}
@end
int main() {
VarArgs *va = [[VarArgs alloc] init];
//[va test:@"你瞅啥",@"瞅你咋滴",@"再瞅一次試試",nil];
int sum = [va test2:2,3,4,5];
NSLog(@"%d",sum);
return 0;
}
objective-c基礎之可變參數列表va_list
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.