C++星火03_valist用法

C++星火03_valist用法1背景函数的参数一般是用栈的形式从右向左进行存储的,所以提取时候是从左向右提取例:#includeusingnamespacestd;voidfun(intnCnt,…){int*pTemp=&nCnt;pTemp++;for(inti=0;i{coutpTemp++;}cout}

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定
1 背景

函数的参数一般是用栈的形式从右向左进行存储的,所以提取时候是从左向右提取

例: #include <iostream>
using namespace std;
void fun(int nCnt, …)
{

int *pTemp =&nCnt;
pTemp++;
for (int i = 0; i < nCnt; ++i)
{

cout << *pTemp;
pTemp++;
}
cout << endl;

}


int main()
{

int a = 1;
int b = 2;
int c = 3;
int d =4;
fun(4, a, b, c, d);
system(“pause”);
return 0;
}
输出结果是 : 1 2 3 4 

2 作用
函数的参数可变时可以进行动态的进行处理不需要知道参数的具体值

3 用法
void TextFunc(int nStart, …)
3.1 头文件
#include <stdarg.h>

3.2 定义一个va_list变量并获取参数列表
va_listap;
va_start(
ap, nStart)

3.3 循环获取数据并进行处理
char* szPara;
while(1)
{

szPara = va_arg(ap, char*) //实际获取的类型可以自定义
if(szPara == NULL)//在实际调用的时候最后加一个特定数据表示结束
{

break;
}
…//处理


3.4 结束处理
va_end(ap);

4 举例:显示可变的字符集合

#include 〈stdio.h〉
    #include 〈string.h〉
    #include 〈stdarg.h〉
  
  int demo( char, … );
  void main( void )
  {

     demo(“DEMO”, “This”, “is”, “a”, “demo!”, “”);
  }
  
  int demo( char msg, … )
  {

      
     va_list argp;
     int argno = 0;
     char para;
 
     va_start( argp, msg );
     while (1)
       
  {

         para = va_arg( argp, char);

         if ( strcmp( para, “”) == 0 )

      {

      break;

              }

        printf(“Parameter #%d is: %s\n”, argno, para);
        argno++;
 }
      va_end( argp );
   return 0;
  }

5 注意

1 参数的类型是用户自己定义的所有要一一对应 
2     最后要加一个特殊的数据表示参数的结束

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215453.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 通俗易懂教你画类图

    通俗易懂教你画类图1.类图1.1类的内容第一层:类的名称,如果是抽象类,则就用斜体显示。第二层:字段和属性。第三层:方法。前面的符号:“+”表示public;”-“表示private;”#”表示protected。1.2类与类之间的关系1.2.1继承关系:空心三角形+实线鸟也有生命这种属性,也有新陈代谢和繁殖的行为。1.2.2实现关系:空心三角形+虚线大雁可以各种各样的飞翔方式。1.2.3关联关系:实线箭头企鹅需要知道气候的变化,需要了解气候规律。1.2.

    2022年7月12日
    24
  • ssm管理系统课题_p2实验室

    ssm管理系统课题_p2实验室开发目的方便高效地实验室设备统一管理,除了实现基本的增删改查,还提供借用、归还、购买和问题反馈功能,可实现对实验室设备的基本业务的处理本项目由本人负责开发完成,项目能保证正常运行,当然其中不免也会有缺漏或不完善的地方解决方案1.后端Java框架使用spring+springmvc+mybatisspring功能是实现参数参数注入,请求分发处理,对数据库操作进行事务控制,其中mybatis使用注解查询,整体上大部分使用xml配置,少部分使用注解2.前端使用HTML+javascript+css+j

    2022年10月13日
    2
  • 研究学习之java使用selenium教程[通俗易懂]

    研究学习之java使用selenium教程[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

    2022年6月28日
    38
  • PHP常见面试题_php面试常问面试题

    PHP常见面试题_php面试常问面试题一.基本知识点1.1HTTP协议中几个状态码的含义:503500401403404200301302。。。200:请求成功,请求的数据随之返回。301:永久性重定向。302:暂时行重定向。401:当前请求需要用户验证。403:服务器拒绝执行请求,即没有权限。404:请求失败,请求的数据在服务器上未发现。500:服务器错误

    2022年8月27日
    4
  • vmware15激活码【2022最新】

    (vmware15激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1TCF2R91JZ-eyJsaWNlbnNlSWQi…

    2022年3月31日
    199
  • 股票模拟交易_JKI状态机

    股票模拟交易_JKI状态机给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。输入格式第一行包含整数 N,表示数组长度。第二行包含 N 个不超过 10000 的正整数,表示完整的数组。输出格式输出一个整数,表示最大利润。数据范围1≤N≤105输入样例:51

    2022年8月8日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号