可变参数之仿写printf函数

本文探讨了可变参数函数的概念,指出此类函数至少需要一个固定参数,并通过实例讲解了如何利用`va_list`、`va_start`、`va_arg`和`va_end`宏来处理可变参数。通过提供的代码示例,读者可以了解如何仿写一个类似printf的函数。
摘要由CSDN通过智能技术生成

可变参数函数:
可变参数函数应至少有一个参数!
原理:根据函数在参数实例化时,参数在栈中存储的特征。依据第一个参数去访问其他的参数。

列:头文件#include<stdarg.h>
add(3,1,2,3);
int add(int n,…)
主要利用的宏:
va_list arg;//定义一个va_list类型变量(指针类型),变量名arg
va_start(arg,n);//初始化arg,让arg指向第一个未知参数
va_arg(arg,int);//提取参数和类型,提取后arg自动指向下一个参数。
va_end(arg);//释放指针空间

代码示例:

//2.使用可变参数函数求最大值,求函数参数的平均值。
#include<stdio.h>
#include<stdarg.h>//可变参数头文件
#include<stdlib.h>
#include<assert.h>

int averge(int count,...);//计算n个数值平均值
int Max_num(int count,...);//求最大值

int main()
{
    int add=0;
    int max_num=0;

    add=averge(3,1,2,3);
    printf("结果为:%d\n",add);

    max_num=Max_num(6,6,5,9,4,1,8);
    printf("最大数:%d\n",max_num);
    system("pause");
    return 0;
}

int averge(int count,...)//计算n个数值平均值
{
    int i=0;
    int num=0;
    va_list arg;
    assert(count);//判空
    va_start(arg,count);//初始化arg,既让arg指向第一个参数(非数值个数参数),个数不提取
    for(i=0;i<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值