0
收藏
微博
微信
复制链接

C语言中的可变参数函数 三个点“…”printf( const char* format, ...)

2025-08-27 16:38
508

    在C语言中,...(省略号)用于表示函数或宏可以接受可变数量的参数(Variable Arguments),也称为可变参数。这种机制允许函数/宏处理不同数量的输入参数。    C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:
int printf( const char* format, ...);

    它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:
printf("%d",i);
printf("%s",s);
printf("the number is %d ,string is:%s", i, s);   

     先看例子程序。该函数至少有一个整数参数,其后占位符…,表示后面参数的个数不定。在这个例子里,所有的输入参数必须都是整数,函数的功能只是打印所有参数的值。函数代码如下:

//示例代码1:可变参数函数的使用
#include "stdio.h"
#include "stdarg.h"
void simple_va_fun(int start, ...)
{
    va_list arg_ptr;//函数里首先定义一个va_list型的变量,这里是arg_ptr,这个变量是存储参数地址的指针
    int nArgValue =start;
    int nArgCout="0";  //可变参数的数目
    va_start(arg_ptr,start);  //用va_start宏初始化arg_ptr,以固定参数的地址为起点,确定变参的                                          内存起始地址。
    do
    {
          nArgCout;
        printf("the %d th arg: %d",nArgCout,nArgValue); //输出各参数的值
        nArgValue = va_arg(arg_ptr,int); //得到下一个可变参数的
    } while(nArgValue != -1);               
    return;
}
int main(int argc, char* argv[])
{
    simple_va_fun(100,-1);
    simple_va_fun(100,200,-1);
    return 0;
}

void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
va在这里是variable-argument(可变参数)的意思。
这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件。
C语言中有一种长度不确定的参数,形如:"…",它主要用在参数个数不确定的函数中,我们最容易想到的例子是printf函数。
宏定义中的可变参数(C99/C11)

在宏中,... 表示可变参数,用 __VA_ARGS__ 展开参数。

示例1:简单的日志宏05bebbe25854a73882dc30c70be0e4.jpg示例2:支持空参数的宏(C99的,##__VA_ARGS__扩展)943af7c221902b73f7b9d6d7baa49e.jpg


登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

大国物联网

专注于电子产品的硬件和单片机软件及嵌入式软件的开发研究。

开班信息