其中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;
}
iOS-函数带可变参数
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 位置参数 我们在利用函数计算一个数的平方时,必须要给这个函数传入一个参数——即我们要计算平方的数。 对于函数pow...
- # a = 1 # ===============================================...