C語言中實現參數個數可變的函數
采用C語言編程的時候,函數中形式參數的數目通常是確定的,在調用時要依次給出與形式參數對應的所有實際參數。但在某些情況下希望函數的參數個數可以根據需要確定。典型的例子有大家熟悉的函數printf()、scanf()和系統調用execl()等
#include<stdio.h>
#include<string.h>
#include<stdarg.h>
int demo(char * ,...);
int main()
{
demo("TEST",5,4,3,2,1,0);//第一個參數只是一個標識,並不在參數表中。
getchar();
return 0;
}
int demo(char *msg,...)
{
va_list argp;
int argno = 0;
int para;
va_start(argp,msg);
while (true)
{
para = va_arg(argp,int);
if (para == 0) break;
printf("Parameter #%d is : %d\n",argno,para);
argno++;
}
va_end(argp);
return 0;
}
2. UNIX System
int
demo(va_alist)
va_dcl
{
va_list
argp;
int
argno = 0;
int
para;
va_start(argp);
while
(true)
{
para
=
va_arg(argp,int);
if
(para==0)
break;
printf("Parameter #%d
is: %d\n",argno,para);
argno++;
}
va_end(argp);
return
0;
}