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;
}
上一篇 下一篇

猜你喜欢

热点阅读