关于变长参数表的

来源:互联网 发布:爱知大学在日本排名 编辑:程序博客网 时间:2024/04/29 17:38

C中可以定义变长参数表,但是没有名字的情况下怎么样去使用这些参数。不过C语言既然支持这种表示方式,也提供了方法去访问他们

va_list fp 定义了一个参数指针用来指向匿名参数

va_start(fp,from)这是对参数指针初始化,在使用参数指针的时候必须要进行初始化,from是有名参数的最后一个,这样fp就指向第一个无名参数了

va_arg(fp,int) 去参数,根据你提供的步长去去参数,这里我是去int长,你可以是double之类的

va_end(ap) 这个是清楚信息使用的

#include<stdarg.h>#include<stdio.h>void minprintf(char *format,...){    int ival = 0;    double dval = 0;    char *sval = NULL,*p = NULL;    //参数指针    va_list ap;    //初始化参数指针,让他指向format后面的匿名参数    va_start(ap,format);    for(p = format;*p;p++)    {if(*p != '%'){    putchar(*p);    continue;}//遇到%号跳过%号读取后面的那个字符switch(*++p){    case 'd':ival = va_arg(ap,int);printf("%d",ival);break;    case 'f':dval = va_arg(ap,double);printf("%f",dval);break;    case 's':sval = va_arg(ap,char*);printf("%s",sval);break;    default:{    putchar(*p);    break;}}    }    //清理工作    va_end(ap);}int main(){    int ival = 5;    char *sval = "world!!";    minprintf("hello is %s",sval);    return 0;}




原创粉丝点击