#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<stdarg.h> #include<string.h> float average(int n_value,...) //求指定數量值的平均值 { va_list var_arg; //聲明va_list變量 int count = 0; float sum = 0; va_start(var_arg, n_value); //准備訪問可變參數 { for (count = 0; count < n_value; count++) { sum += va_arg(var_arg, int); } va_end(var_arg); //完成可變參數的處理 return sum / n_value; } } int main() { printf("%lf\n", average(6,1,2,3,4,5,6)); system("pause"); return 0; }
上面的例子是實現求指定數量值的平均值的可變參數列表實現辦法。 當然可變參數的應用還有很多比如實現字符串的拷貝
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<stdarg.h> #include<string.h> void nstrcpy(char *dest, ...) { va_list pi; //聲明va_list變量 char *p; va_start(pi, dest); while ((p = va_arg(pi, char *)) != NULL) //通過va_arg(pi,char *)來提取參數列表中的變量 { strcpy(dest, p); dest += strlen(p); //復制完成一個變量進行下一個的復制 } va_end(pi); } int main() { char a[100]; char *b = "asdg"; char *c = "qwewq"; char *d = "aswq"; nstrcpy(a, b, c, d); printf("%s\n", a); system("pause"); return 0; }
完成多個字符串的拷貝。 對可變參數列表的簡單理解,對於三個宏具體的定義還不是很明白,等徹底搞清楚了再來完善關於可變參數列表的博客。