c语言定义函数参数时,允许参数的使用数量可变,在c语言中称可变参数函数,例如:
c标准函数printf的声明方式:int printf(const char *fmt,...)
c标准函数scanf的声明方式:int scanf(const char *fmt,...)
它们有共同的特点:
1、函数都有一个强制参数
2、后面跟着的参数的个数和类型是可变的(用“...”做参数占位符)
在可变参数函数中的可变参数分配连续地址,参考以下代码及调试输出:
#include <stdio.h>
void test(int a,int b,char c)
{
int d;
int e;
int f;
printf("a的地址:%d\n",&a);
printf("b的地址:%d\n",&b);
printf("b的地址:%d\n",&c);
printf("c的地址:%d\n",&d);
printf("e的地址:%d\n",&e);
printf("f的地址:%d\n",&f);
}
void main()
{
test(20000000,4,'c');
}
调试输出:
a的地址:14678720
b的地址:14678724
b的地址:14678728
c的地址:14678704
e的地址:14678692
f的地址:14678680
a、b、c是函数参数,由调试输出可知,