- 带有可变参数的函数
int kkkkkkkk(int num, ...){
}
num 是可变参数的个数,
… 是可变参数
- 定义变量存可变参数
int kkkkkkkk(int num, ...){
va_list v1; //int a;
}
类似于int a;
va_list是重点
- 初始化变参变量
int kkkkkkkk(int num, ...){
va_list v1; //int a;
va_start(v1, num); //a = 6;
}
类似于a = 6;
va_start() 是重点
- 遍历参数列表
int kkkkkkkk(int num, ...){
va_list v1; //int a;
va_start(v1, num); //a = 6;
for (int i = 0; i < num-1; i++){
canshu = va_arg(v1, int);
printf("%d", canshu);
}
}
需要手动计数遍历到第几个参数了。
重点是va_arg(v1, int),他返回当前参数,自动指向下一个参数,写int
是因为传进来的参数是int类型,我们把指针往后指四个字节,就是下一个int。
用while循环遍历也可以:
int kkkkkkkk(int num, ...){
va_list v1; //int a;
va_start(v1, num); //a = 6;
while(num--){
canshu = va_arg(v1, int);
printf("%d", canshu);
}
}
- 结束遍历,结束使用
int kkkkkkkk(int num, ...){
va_list v1; //int a;
va_start(v1, num); //a = 6;
for (int i = 0; i < num-1; i++){
canshu = va_arg(v1, int);
printf("%d", canshu);
}
va_end(v1);
}
重点是va_end(v1)
总结:
四步走
- va_list
- va_start
- va_arg
- va_end