黄石做网站的公司/营销渠道管理

黄石做网站的公司,营销渠道管理,工程与建设,最新网站备案用过printf()函数的热都知道,printf的参数可以有多个,它是可变的,根据我们输出参数的类型以及个数的不同来确定参数。今天来学习C语言中参数可变的函数是如何实现的。 文章目录1 可变参数2 总结1 可变参数 首先我们要明白一点,在…

用过printf()函数的热都知道,printf的参数可以有多个,它是可变的,根据我们输出参数的类型以及个数的不同来确定参数。今天来学习C语言中参数可变的函数是如何实现的。

文章目录

    • 1 可变参数
    • 2 总结

1 可变参数

首先我们要明白一点,在C语言中,参数可变的函数的实现,要依赖于头文件stdarg.h。所以在实现这样的函数的时候,需要包含该头文件。

其次,实现函数可变参数需要使用以下几个类型参数,我们需要熟练掌握它们的使用,下面先看看这些参数是什么?

  1. va_list:参数集合
  2. va_arg:取具体参数值
  3. va_start:标识参数访问的开始
  4. va_end:标识参数访问的结束

看了上面的参数的意义,还是不知道什么是什么。下面看一个例子,就能彻底明白了。

下面函数的意思是求n个数的平均值。这n个数直接作为参数传递给函数(这么写肯定是效率不高,这里只是为了学习使用)

  • 45-2.c
#include <stdio.h>
#include <stdarg.h>float average(int n, ...){  //这个n代表参数的个数,后面的...代表后面的参数不确定是什么va_list args;      // args代表函数可变参数的集合int i = 0;float sum = 0;va_start(args, n); // 如果要遍历args参数的话,则从args参数集合的开始,遍历n次结束for(i=0; i<n; i++){sum+=va_arg(args, int);  // 开始遍历,取具体参数值,类型为int}va_end(args);      // 代表参数集合args访问结束return sum/n;
}int main(){printf("%f\n", average(5,1,2,3,4,5));printf("%f\n", average(4,1,2,3,4));return 0;
}
  • 上述代码编译运行结果为:

在这里插入图片描述
上面代码不难,主要是学会使用那几个参数的使用。我们需要注意以下几点:

  • 可变参数必须从头到尾按照顺序逐个访问
  • 参数列表中,至少要存在一个确定的命名参数
  • 可变参数函数无法确定实际的参数的数量,需要在运行的时候根据具体的传参结果来计算
  • 可变参数函数,无法确定参数的实际类型

注意:如果va_arg中指定的参数的类型与实际的不匹配,那么最终的计算结果将是不可预测的。

2 总结

  • 学会定义可变参数的函数。主要是使用方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【离散数学中的数据结构与算法】一 最大公约数与最小公倍数之间的关系

文章目录1 算数基本定理2 最大公约数3 最小公倍数4 性质5 推论1 算数基本定理 设正整数 n>1&#xff0c; 则 n 可唯一地表示为&#xff1a; 其中 p1<p2<,…, <ps 是 s 个相异的素数&#xff0c; 指数ki都是正整数。 此定理又称作唯一析因定理&#xff08;unique f…

【离散数学中的数据结构与算法】二 欧几里得算法与裴蜀等式

欧几里得算法是计算两个数最大公因子算法。又称辗转相除法。本文将学习为什么辗转相除法可以求得两个数的最大公因子。同时也可以根据最大公因子计算两个数的最小公倍数。 文章目录1 欧几里得算法的理论基础1.1 欧几里得算法&#xff08;辗转相除法&#xff09;2 裴蜀等式&…

【离散数学中的数据结构与算法】四 加法法则与乘法法则

文章目录1 加法法则2 乘法法则3 例子3.1 例一3.2 例二3.3 例三4 总结1 加法法则 加法法则&#xff1a; 设事件 A 有 m 种产生方式&#xff0c; 事件 B 有n 种产生方式&#xff0c;则当 A 与 B 产生的方式不重叠时&#xff0c;“事件 A 或 B 之一” 有 mn 种产生方式。 加法法…

前端学习(310):清除浮动的方法

我们经常把高度塌陷问题也叫做常见的几种清除浮动的方法 高度塌陷问题—父元素高度自适应&#xff0c;子元素float后&#xff0c;造成父元素高度为0&#xff0c;就叫做高度塌陷问题 给父元素一个高度 缺点&#xff1a;无法高度自适应 父元素{overflow:hidden;} 缺点&#xf…

【离散数学中的数据结构与算法】五 排列与组合一

在leetcode刷题过程中&#xff0c;遇到过很多关于排列组合的问题。弄清楚排列组合的相关原理&#xff0c;是非常有用处的。 文章目录1 问题2 排列-有序选取2.1 重复选取-可重排列2.2 不重复选取-排列2.21 全排列3 例题4 总结1 问题 设集合S包含n个元素&#xff0c;从S中选取r个…

Google Maps 地址转化成坐标

http请求格式http://maps.google.com/maps/geo?q查询关键字&outputkml(输出格式可以 为xml kml json)&oeutf8&sensortrue或者false&key你的apikey示例http://maps.google.com/maps/geo?q湖南大学软件学院&outputkml&keyabcdefg(api key)输出kml文件如…

【离散数学中的数据结构与算法】六 排列与组合二

接着上一篇学习&#xff1a;【离散数学中的数据结构与算法】五 排列与组合一 上一篇文章主要学习了可重复选取的可重排列和不可重复选取的排列。他们都是在n个不同的对象中选取。 今天我们俩学习的是&#xff0c;当这个n个对象中有相同的元素的时候&#xff0c;排列的相关定理…

【离散数学中的数据结构与算法】七 排列与组合三

前两篇文章学习了不可重复选取的排列与可重复选取的可重排列。本篇文章开始学习组合的相关定理。 文章目录1 组合1.1 组合的计算公式2 总结1 组合 跟排列一样。组合也分为不重复选取的组合&#xff0c;与可重复选取的可重组合。本节内容主要学习不可重复选取的组合 从 n 个不…

Silverlight4.0教程之WebBrowser控件(Silverlight内置HTML浏览器控件)

微软于PDC2009上发布Silverlight 4 Beta版&#xff0c;微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求&#xff0c;加入了一系列另开发人员兴奋的新特性&#xff0c;最突出的主要体现在几个方面&#xff1a; 开发工具增强&#xff1a;Visual Studio 2010…

【离散数学中的数据结构与算法】八 排列与组合四

上一篇文章学习了组合&#xff08;不可重复选取的&#xff09;。今天来将可重复选取的组合学习一下。 文章目录1 可重复选取的组合-可重组合2 总结1 可重复选取的组合-可重组合 现在有4种口味的棒棒糖&#xff0c;你要从中选3个(允许你选同种口味)总共有多少种不同的选法&…

【离散数学中的数据结构与算法】九 鸽巢原理

鸽巢原理是非常著名的原理&#xff0c;生活正用的也很多。 文章目录1 简单鸽巢原理的应用2 定理&#xff08;一般性鸽巢原理&#xff09;2.1 应用3 总结1 简单鸽巢原理的应用 定理&#xff08;鸽巢原理&#xff09; 若有 n 个鸽巢&#xff0c; n1 个鸽子&#xff0c;则至少有…

【离散数学中的数据结构与算法】十 汉诺塔

汉诺塔也是经典的算法问题 文章目录1 汉诺塔问题1 汉诺塔问题 法国数学家卢卡斯&#xff08;Edouard Lucas&#xff09;在1883年提出了一个数学游戏&#xff1a; 传说在世界中心贝拿勒斯&#xff08;印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上有三根宝石柱。印度…

【离散数学中的数据结构与算法】十一 错排问题

错排问题比较难&#xff0c;但是也是经典算法问题 文章目录1 错排问题2 总结1 错排问题 家中阳台有10盆不同的花&#xff0c;为保持新鲜感&#xff0c;希望每天重新摆放&#xff0c;使得每盆花都不在第一天放的位置。那么最多可以保持多少天每天摆法都不同&#xff1f; 这是一…

数据结构与算法实战-C++实现

学习交流加&#xff08;可免费帮忙下载CSDN资源&#xff09;&#xff1a;个人微信&#xff1a; liu1126137994学习交流资源分享qq群1&#xff08;已满&#xff09;&#xff1a; 962535112学习交流资源分享qq群2&#xff1a; 780902027 推荐一个数据结构实战课程&#xff0c;学习…

ie6 7下 relative absolute无法冲破的等级问题解决办法

最近做垂直市场遇见这样一个问题&#xff0c;在标准浏览器下如图一&#xff0c;所有地区列表正常显示&#xff0c;以下拉形式浮在最上层&#xff0c;可是在IE6、7下如图二就会被下面的图片所遮盖&#xff0c;z-index设置多大都不起作用。图一 &#xff08;标准浏览器 和 IE8&am…

使用说明 思迅收银系统_使用自助收银系统让消费者自助结算更便捷高效?

很多超市的人工收银台&#xff0c;在客流的高峰期&#xff0c;如节假日、活动促销时间段、周末等&#xff0c;结账慢且客流量大&#xff0c;容易出现顾客排长队等待结账的情况。这样会有结账慢、收银员收银压力大的影响&#xff0c;进而影响顾客的购物体验。在超市使用自助收银…

【Linux进程、线程、任务调度】四多核下负载均衡 中断负载均衡,RPS软中断负载均衡 cgroups与CPU资源分群分配 Linux为什么不是硬实时 preempt-rt对Linux实时性的改造

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章&#xff08;点击链接&#xff1a;点击链接阅读上一篇文章&#xff09;讲了&#xff1a; CPU/IO消耗型进程吞吐率 vs. 响应SCHED_FIFO算法…