当前位置: 首页 > wzjs >正文

建网站能挣钱吗住房建设危房改造网站

建网站能挣钱吗,住房建设危房改造网站,淘宝页面设计的网站,有了网站怎么写文章可变参数函数 一,什么可变参数函数?二,实现机制1,函数调用时的栈与栈帧2,可变参数实现机制 一,什么可变参数函数? 普通函数: 声明时参数个数和类型都固定好,比如 int ad…

可变参数函数

  • 一,什么可变参数函数?
  • 二,实现机制
    • 1,函数调用时的栈与栈帧
    • 2,可变参数实现机制

一,什么可变参数函数?

普通函数:
声明时参数个数和类型都固定好,比如 int add(int a, int b),只能接收两个 int。

可变参数函数:
在声明时只写固定的“前导”参数,后面用 … 表示还有不定数量、也不定类型的参数。

有点抽象,下面直接上例子

int my_printf(UART_HandleTypeDef *huart, const char *format, ...)
{char buffer[512];//定义储存字符串的数组va_list arg;//定义可变参数类型int len;//储存字符串长度的变量va_start(arg, format);//初始化第一个参数len = vsnprintf(buffer, sizeof(buffer), format, arg);//格式化字符串va_end(arg);HAL_UART_Transmit(huart, (uint8_t *)buffer, (uint16_t)len, 0xFF);return len;
}

这是我们串口发送时使用的函数,第一个形参固定了是一个UART的句柄(包含UART的所有信息),后面的参数可以改变如:

my_printf(&huart1,"Value=%d\n", 42);
my_printf(&huart1,"A=%d, B=0x%02X, C=%.2f\n", 10, 0x5A, 3.14);

这里应该理解了为什么串口所有可变参数函数了吧
接下来讲讲可变参数函数的具体实现机制

二,实现机制

在讲可变参数函数之前,我们要先了解函数调用时的栈

1,函数调用时的栈与栈帧

栈存储了大量数据,当调用函数时会分出一部分空间,这部分空间就是栈帧,储存函数的信息(参数、局部变量、返回地址等)
注:这些信息会从右往左得挤进栈帧里。可变变量会跟在固定变量后面进入栈帧

2,可变参数实现机制

1,va_list 指针类型,用于指向可变参数列表中的当前位置。
va_list:
指针类型,在原代码中。arg就是用来储存可变变量地址的宏,它得类型就是va_list.
在串口功能中,我们需要访问可变变量,完成传输,arg就是用来储存这些可变变量的。

2,va_start 初始化第一个可变参数的位置,并且规定最后一个固定变量
储存可变变量的容器**(arg)有了,我们该如何访问栈帧里的可变变量呢?
va_start会访问最后一个固定变量的位置,再直接规定下一个位置为第一个可变变量。
arg 会被初始化并指向可变参数的开始位置,方便后续通过 va_arg 获取每个参数。
因为我们前面说了,可变变量是紧跟着固定变量进的栈。

3,va_end 代表对可变参数处理结束,可以释放va_list相关资源
va_end会告诉编译器,我们停止对可变变量的处理,并且清除arg


文章转载自:

http://H87R7thC.sgbss.cn
http://srKOmJQQ.sgbss.cn
http://CiumgHFg.sgbss.cn
http://Vpce3mD8.sgbss.cn
http://Qgw2Bvxl.sgbss.cn
http://ILXaUQmZ.sgbss.cn
http://yZOsBDMk.sgbss.cn
http://ottIbeHA.sgbss.cn
http://cFE2gUVF.sgbss.cn
http://F6KReDtT.sgbss.cn
http://QdwRGxaU.sgbss.cn
http://UEI4wT4Y.sgbss.cn
http://DoL3lvNS.sgbss.cn
http://lTUlyzH7.sgbss.cn
http://OIkRds3i.sgbss.cn
http://Y8rMWyLN.sgbss.cn
http://BLlvdFJ2.sgbss.cn
http://4n6OalUZ.sgbss.cn
http://v94OcsxT.sgbss.cn
http://q0TN508Z.sgbss.cn
http://EvNcQTBL.sgbss.cn
http://lZihXeD4.sgbss.cn
http://TEgTATFW.sgbss.cn
http://1Ff4W7Uk.sgbss.cn
http://ogRtNBsS.sgbss.cn
http://3PZzLEhW.sgbss.cn
http://1Pn3F13z.sgbss.cn
http://yz1qVb7k.sgbss.cn
http://vqY1IkhB.sgbss.cn
http://cp3Bctqa.sgbss.cn
http://www.dtcms.com/wzjs/604812.html

相关文章:

  • 南涧县城乡建设局网站宁波网站优化技术
  • 银川网站开发公司seo是做网站源码还是什么
  • 合肥网站建设方案维护企业做网站有哪些好处
  • 青岛网站建设服务器做网站设计工作的报告
  • 揭阳网站制作多少钱网站做哪家最专业广州
  • 温州建网站业务人员东莞网站建设制作软件
  • 手机商城系统哪个好网站seo优化推广怎么做
  • 建设网站用凡科怎么样长春 行业网站
  • 西安西郊网站建设网址域名是什么
  • 宜昌市住房和城乡建设局网站免费网站登陆模板
  • 遵义晚报电子版官方网站装修效果图免费软件
  • 天商阳光网站邮箱项目网上备案查询系统
  • 建设银行贵阳市网站电话wordpress如何添加目录菜单
  • 淘宝联盟+做网站wordpress博客缩略图
  • wordpress 作品展福州seo招聘
  • 做婚庆网站有哪些内容杭州发布官网
  • 网店美工设计论文爱站seo工具包免费版
  • 遂昌建设局网站河南郑州网站制作公司
  • 网站建设与维护成本网站做会员系统
  • 衡水微信网站建设微商营销宝最新版
  • 网站建设kaicz大型门户网站的建设外包在本公司制作好还是
  • 南京企业网站设计公司十大网站建设公司
  • 私人订制旅游网站建设制作一个网站难吗
  • 深圳网站建设有限公司企业门户是什么意思
  • 广东企业网站模板推荐公众号平台注册
  • 网站建设基础资料电子商务网站开发需求分析
  • 昌平做网站网站开发的合同编写
  • 简述网站规划的任务企业展厅图文设计
  • 兴义市建设局网站石狮网站建设科技
  • 网站建设计划方案模板下载wordpress 源文件导入