1. 变长参数
简单来看,变长参数的实质就是将连续的一块空间传递给函数,函数拿这块空间的起始地址以及参数数目,按照一定的字节(int 4个字节,double 8个字节)进行读取,最终将所有的参数全部读出。
#include <stdio.h>
#include <stdarg.h>
/*
* 实现变长参数
*/
void HandleArgs(int arg_count, ...){
// 1. 定义一块空间,存入所有的变长参数
va_list args;
// 2. 将这块空间分割为参数数目个数
va_start(args, arg_count);
// 3. 读取每块空间的参数
for (int i = 0; i < arg_count; ++i) {
int arg = va_arg(args, int);
printf("%d: %d\n", i, arg);
}
// 4. 这块空间使用结束
va_end(args);
}
int main(){
HandleArgs(4,1,2,3,'a');
return 0;
}