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

东莞网站建设公司百推免费seo快速排名系统

东莞网站建设公司百推,免费seo快速排名系统,如何部署asp网站,嘉兴网站制作多少钱Linux C语言 26-可变参数 本节关键字:可变参数、va_list、va_arg、va_end 相关C库函数:va_list、va_arg、va_end 什么是可变参数? C语言中的可变参数是指函数能够接受不定数量的参数。在不确定函数参数时,使用“char *format, …

Linux C语言 26-可变参数

本节关键字:可变参数、va_list、va_arg、va_end
相关C库函数:va_list、va_arg、va_end

什么是可变参数?

C语言中的可变参数是指函数能够接受不定数量的参数。在不确定函数参数时,使用“char *format, …”的方式提供多个参数的输入。可变参数的引入旨在解决:

  • 变参问题是指参数的个数不定,可以是传入一个参数也可以是多个;
  • 可变参数中的每个参数的类型可以不同,也可以相同;
  • 可变参数的每个参数并没有实际的名称与之相对应。
    因此,当函数的参数个数不确定时,就可以使用可变参数进行动态处理,这样就打打增加了程序的灵活性。

相关宏和函数

#include <stdarg.h>
#define va_start(v,l)    __builtin_va_start(v,l)
#define va_end(v)    __builtin_va_end(v)
#define va_arg(v,l)    __builtin_va_arg(v,l)void va_start(va_list ap, last);
type va_arg(va_list ap, type);
void va_end(va_list ap);
void va_copy(va_list dest, va_list src);int printf(const char *format, ...);
int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);

va_list的使用

(1)在函数中定义一个具有va_list型的变量,这个变量是指向参数的指针。
(2)用va_start宏初始化变量刚定义的va_list变量,使其指向第一个可变参数的地址。
(3)va_arg返回可变参数,va_arg的第二个参数是你要返回的参数的类型(如果多个可变参数,依次调用va_arg获取各个参数)。
(4)最后使用va_end宏结束可变参数的获取。

在使用va_list是应该注意以下问题:

  • 可变参数的类型和个数完全由代码控制,它并不能智能地识别不同参数的个数和类型。
  • 如果我们不需要一一详解每个参数,只需要将可变列表拷贝到某个缓冲区,可以用vsprintf函数。
  • 因为编译器对可变参数的函数原型检查不够严格,对编程查错不利,不利于我们写出高质量的代码。

va_list使用例程

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <time.h>void myprint(const char *format, ...)
{char str[1024] = {0};va_list vList;va_start(vList, format);vsprintf(str, format, vList);va_end(vList);printf("%s\n", str);
}int sum(char *format, ...)
{va_list vList;int nStep, sNum=0;va_start(vList, format);printf("%s\n", format);while (nStep = va_arg(vList, int)){// va_arg负责取出符合参数类型的下一个指针// 第一个参数时可变参数变量,第二个参数是传入参数类型,sNum += nStep;}va_end(vList);return sNum;
}int main(int argc, char *argv[])
{int rc;time_t tnow = time(0);struct tm *t = localtime(&tnow);myprint("%04d-%02d-%02d %02d:%02d:%02d %s\n", t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec,"this is va_list testing program.");rc = sum("Hello World!", 1, 2, 3, 4);myprint("rc=%d\n", rc);return 0;
}/** 运行结果:
2023-11-24 16:57:01 this is va_list testing program.Hello World!
rc=10*/
http://www.fp688.cn/news/154304.html

相关文章:

  • 在线直播网站怎么做银川seo
  • 做电影资源缓存网站教程怎么提高百度搜索排名
  • 怎样去同行网站做外连接seo zac
  • 关于建设网站的通知cps推广平台
  • 政府网站建设的意义seo引擎优化平台培训
  • 台州市临海建设局网站小程序开发工具
  • 免费网页游戏在线玩搜索引擎优化涉及的内容
  • 做垃圾词影响网站排名吗超级软文
  • 手机网站建设代理商seo关键词挖掘工具
  • 做sns网站要多大空间注册平台
  • 保定网站设计公司网站推广互联网推广
  • 用网页采集个人信息网站怎么做广州推广引流公司
  • 织梦模仿网站视频今日北京新闻
  • 青岛建站合作网络营销推广网站
  • 网站开发费计入什么会计科目百度热搜榜排名
  • 自己做个网站多少钱长尾关键词排名系统
  • 微信公众号微网站开发类型google搜索app下载
  • 如何制作网页跳转链接旺道seo推广有用吗
  • 上云网站做等保流量推广app
  • 河源市新闻最新消息快速排名生客seo
  • 东莞住房和城乡建设网沈阳网站seo排名公司
  • 上海做网站设计公司优化设计官方电子版
  • 赣州新闻媒体求助热线武汉seo推广优化
  • 做盗版电影网站犯法吗搜狗搜索引擎优化指南
  • 网站空间多少钱网络营销的目的和意义
  • 论坛网站方案廊坊网站建设公司
  • 营销型 网站开发南沙seo培训
  • 360怎么做网站搜索关键词代发排名首页
  • 网站开发 京东关键字优化
  • 贵阳个人做网站昆明装饰企业网络推广