C言語における可変パラメータ


1、ヘッダファイルが必要
#include <stdarg.h>

2、関数定義
void logcmd(int arg0,...)
void logcmd(char *arg0,...)

3、

i、

void logcmd(int n,...)
{
	va_list ap;
	int i = 0;

	va_start(ap,n);// ap      
	for(;n;n--)//    
		printf("%d ",va_arg(ap,int));
	va_end(ap);//    
	printf("
"); }
  n       ,n         。   :

logcmd(0);
logcmd(1,9);
logcmd(2,5,6);
:
9
5 6
もちろん、intタイプのパラメータであれば、nではなく、 に したパラメータが であるなど、 に の を1つ して することもできます.
void logcmd(int arg0,...)
{
	va_list ap;
	int i;
	va_start(ap,arg0);// ap      
	for(i = arg0; i >= 0; i = va_arg(ap,int))//    
		printf("%d ",i);
	va_end(ap);//    
	printf("
"); }
コール:
logcmd(3,1,2,-1);
:
3 1 2
ii、 タイプ
void argsChar(int n,...)
{
	va_list args;
	char *s;
	va_start(args,n);
	for(int i=0;i<n;i++){
		s = va_arg(args,char*);
		printf("%s
",s); } va_end(args); }

argsChar(2,"hello","world");
:
hello
world