iOS-函数带可变参数
2020-04-14 本文已影响0人
鹿港小镇betterman
其中NS_REQUIRES_NIL_TERMINATION作用是提醒在参数列表末尾加上nil。
+ (int)add:(int)param,... NS_REQUIRES_NIL_TERMINATION{
//用于声明一个变量,我们知道函数的可变参数列表其实就是一个字符串,
//所以va_list才被声明为字符型指针,这个类型用于**声明一个指向个数可变的参数列表的字符型指针变量。
va_list args;
//初始化前面定义的va_list变量,让指针一开始指向首个参数。args--我们之前定义的偏移指针 param--参数列表的第一个参数。
va_start(args, param);
int sum = param;
int num;
for ( ; ; ) {
//函数的作用是根据指针进行取值,取出值以后返回,并且指针偏移一位,
//所以可以进行一个循环,通过va_arg不停的移动指针,依次取出后面的参数。
num = va_arg(args, int);
printf("va_arg(args, int) === %d\n",num);
if (!num) {
break;
}else{
sum += num;
}
}
//清空参数列表,并置参数指针args无效,结束参数的获取
va_end(args);
return sum;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
printf("参数之和为 == %d\n",[self add:5,5,6,7, nil]);
}
return 0;
}