c 语言实现函数可变参数
前言:
本文在很大程度上改编自网友 kevintz
“
的 C
”
语言中可变参数的用法 一文,在行文
之前先向这位前辈表示真诚的敬意和感谢。
一、什么是可变参数
我们在 C 语言编程中有时会遇到一些参数个数可变的函数,例如 printf()函数,其函
数原型为:
int printf( const char* format, ...);
它除了有一个参数 format 固定以外,后面跟的参数的个数和类型是可变的(用三
“…”
个点
做参数占位符),实际调用时可以有以下的形式:
printf("%d",i);
printf("%s",s);
printf("the number is %d ,string is:%s", i, s);
以上这些东西已为大家所熟悉。但是究竟如何写可变参数的 C 函数以及这些可变参
数的函数编译器是如何实现,这个问题却一直困扰了我好久。本文就这个问题进行一些探
讨,希望能对大家有些帮助.
二、写一个简单的可变参数的 C 函数
先看例子程序。该函数至少有一个整数参数,
…
其后是占位符 ,表示后面参数的个
数不定. 在这个例子里,所有的输入参数必须都是整数,函数的功能是打印所有参数的
值.
函数代码如下:
//示例代码 1:可变参数函数的使用
#include "stdio.h"
#include "stdarg.h"
void simple_va_fun(int start, ...)
{
va_list arg_ptr; /*申请一个变量,
int nArgValue =start;