C语言中不定参数函数

在我们平常调用函数的时候,会进行传参,调用的函数也会有参数去接收,数量和类型都是对应的。而不定参数函数是指对一个函数传参,参数的个数可以不确定。接下来,我就简单的叙述一下不定参数函数的原理及应用。

 

在我们刚学C语言的时候,大多会首先接触printf();函数。通过这个函数,我们可以打印变量到屏幕,如:

printf("%d", a);

printf("%d,%d",b,c);

printf();也是一个函数,我们平常也只会应用他,他的功能是想打印多少东西就可以打印多少。但是printf();函数也是有参数的,他的函数内容包含在头文件里面,所以我们只需要使用就可以了。

但是我们现在要考虑的是,在我们设计不定参数函数的时候:

1.如何告诉函数我们传入了几个参数

2.每个参数的类型是什么

3.函数怎样去访问这些参数

4.函数调用完成后如何将参数从堆栈中释放出来

函数定义看似简单,实际上却需要我们解决许多问题。

要解决上面的问题,我们需要了解下面几个宏定义:

va_list  这个是typedef重新定义的一个类型,本质是char *

va_start()  是用来初始化指针的

va_arg()  值指向后面未知参数部分,能拿出我们想要拿出来的值,并且每一次使用,指针都会指向下一个参数

va_end()  是用来释放这个指针的。

调用这几个参数,需要定义 <stdarg.h> 这个头文件。

下面我们来用printf();函数举例说明可变参数函数的调用过程:


                
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值