C语言中编写可变参数函数

发布时间 - 2026-01-11 02:21:50    点击率:

通过stdarg.h头文件为函数提供了定义可变参数列表的能力。声明一个可变参数的函数类似:

void f1(int n,...);

其中n表示参数列表个数,而用省略号来表示未知参数列表。stdarg.h中提供了一个va_list类型,用于存放参数。一个大概的使用过程类似:

void f1(int n,...)

{

va_list ap;

va_start(ap,n);  //初始化参数列表

double first=va_arg(ap,double); //取第一个参数

int second=va_arg(ap,int);  //取第二个参数

...

va_end(ap); //清理工作

}

看一个求和的例子:

#include < stdio.h > #include < stdarg.h > 
 double sum( int  , 
);
 int main( void 
)

{

 double 
s,t;

s
 = sum( 3 , 1.1 , 2.2 , 13.3 
);

t
 = sum( 6 , 1.1 , 2.1 , 13.1 , 4.1 , 5.1 , 6.1 
);

printf(
 " return value for " 
\

 " sum(3,1.1,2.2,13.3):  %g\n " 
,s);

printf(
 " return value for " 
\

 " sum(6,1.1,2.1,13.1,4.1,5.1,6.1):  %g\n " 
,t);

 return  0 
;

}
 double sum( int  lim, 
)

{

va_list ap;

 double total = 0 
;

va_start(ap,lim);

 int 
i;

 for (i = 0 ;i < lim;i ++ 
)

total
 += va_arg(ap, double 
);

va_end(ap);

 return 
total;

}
 

C语言对可变参数的使用还是有点麻烦,不如ruby和java简便。比如ruby中定义并使用可变参数参数:

def sum(*e)

e.inject{|sum,i| sum+=i}

end

sum(1,2,3,4,5)=>15


# c  # 可变参数函数  # c语言可变参数函数  # C语言可变参数与函数参数的内存对齐详解  # C语言main()函数的参数问题详解  # C语言 函数缺省参数详情  # C语言可变参数函数详解  # C语言的可变参数函数实现详解  # C语言函数的参数使用指针  # C语言中函数参数的入栈顺序详解及实例  # C语言深入讲解函数参数的使用  # 第一个  # 第二个  # 而用  # 头文件  # va_start  # double  # ap  # va_arg  # include  # va_end  # lt  # cpp  # void  # stdarg  # code  # int  # class  # brush  # va_list  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何正确下载安装西数主机建站助手?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  JavaScript Ajax实现异步通信  如何在万网ECS上快速搭建专属网站?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  公司网站制作价格怎么算,公司办个官网需要多少钱?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  个人网站制作流程图片大全,个人网站如何注销?  如何在企业微信快速生成手机电脑官网?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel如何创建自定义Artisan命令?(代码示例)  北京网站制作的公司有哪些,北京白云观官方网站?  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  详解jQuery中的事件  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何在宝塔面板中创建新站点?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  javascript中闭包概念与用法深入理解  Laravel API资源类怎么用_Laravel API Resource数据转换  如何用PHP快速搭建高效网站?分步指南  香港服务器网站推广:SEO优化与外贸独立站搭建策略  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  如何在阿里云部署织梦网站?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Android GridView 滑动条设置一直显示状态(推荐)