我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i);
(一)写一个简单的可变参数的C函数 void va_start( va_list arg_ptr, prev_param ); va在这里是variable-argument(可变参数)的意思.这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值. void simple_va_fun(int i, ...) 我们可以在我们的头文件中这样声明我们的函数: extern void simple_va_fun(int i, ...); 我们在程序中可以这样调用: simple_va_fun(100);
如果我们用下面三种方法调用的话,都是合法的,但结果却不一样: simple_va_fun(100); 结果是:100 -123456789(会变的值) 2) simple_va_fun(100,200); 结果是:100 200 3) simple_va_fun(100,200,300); 结果是:100 200 我们看到第一种调用有错误,第二种调用正确,第三种调用尽管结果正确,但和我们函数最初的设计有冲突.下面一节我们探讨出现这些结果的原因和可变参数在编译器中是如何处理的. |
正在阅读:C语言中可变参数的用法C语言中可变参数的用法
2005-07-21 10:16
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键
302 Found
Powered by Tengine