va_start

// printf_va_list.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>

void Print(const char* fmt,...)
{
	va_list ap;
	va_start(ap,fmt);
	vfprintf(stderr,fmt,ap);
	va_end(ap);
}

void fun(const char* fmt,...)
{
	va_list ap;
	va_start(ap, fmt);//将ap指向fmt后的第一个参数
	int value;
	do{
		value = va_arg(ap,int);//前提是我们知道第一个参数是int型;指针指向下一个参数 
		printf("value[%d]\n",value);
	}while(value!=-1);
	va_end(ap);//将ap置为NULL
}

int _tmain(int argc, _TCHAR* argv[])
{

    Print("%d%d%s",32,23,"zjw");

	fun("%d%d%s%d",32,23,"zjw",-1);
	system("pause");
	return 0;
}



RES:http://www.cnblogs.com/hcbin/archive/2012/03/26/2417355.html

你可能感兴趣的:(va_start)