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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LLDP简介

    LLDP简介1.1.1LLDP产生背景目前,网络设备的种类日益繁多且各自的配置错综复杂,为了使不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息,需要有一个标准的信息交流平台。LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)就是在这样的背景下产生的,它提供了一种标准的链路层发现方式,可以将本端设备的信息(包括主要能力、管理地址、设备标识、接口标识等)组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(Lin…

    2022年5月28日
    88
  • JAVA异或加密「建议收藏」

    JAVA异或加密「建议收藏」JAVA异或加密int或者byte类型的数据异或操作后变成另外一个数字,再次和同一个数异或后又变成原来的数字。例1/**加密前数字:3加密后数字:1解密后数字:3加密前字符:abcd加密加密后字符:c`af爢筄解密后字符:abcd加密*/publicstaticvoidmain(String[]args){int…

    2022年10月5日
    0
  • impala中转换字段类型,类型强转

    impala中转换字段类型,类型强转cast(字段名as要转换为的类型)例如:要将student表中的age字段(原本是int类型)转成string类型,如下:cast(student.ageasstring)asage–年龄

    2022年9月5日
    2
  • 看完很清醒,我相信这是一个同龄人写的。。加油。。被扇醒的感觉

    你学习一般,考上了现在的这个学校,成绩不算好,拿不到校奖国奖,自习不规律上课不常听,考试全靠突击,同学帮一把也能考到七八十分。你家境一般,父母都是普通员工,在这个城市一个月生活费一千二,没事下下馆子,一个月添一件衣服,想买台相机要等几个月,经常要咬咬牙才能买双自己喜欢的鞋。你特长一般,不会吉他不会钢琴不会跳舞不会画画,想学摄影却不会PS,想上台演出却没信心,学校晚会比赛的时候,你经

    2022年3月8日
    28
  • 国内十大正规现货交易平台排名(2022最新榜单)「建议收藏」

    国内十大正规现货交易平台排名(2022最新榜单)「建议收藏」如今,越来越多的人投资于黄金,因为这些投资项目更适合当今年轻人的需求,但为了通过黄金投资获得理想的回报,我们首先需要选择一个可靠的国内黄金交易平台,由于市场上的各种平台都很复杂,有些平台可能不是很正规。如果你选择这样的一个平台投资,收获可能会并不理想,但选择好的平台事实上并不像预期的那么困难。香港作为全球的金融中心之一,其金银业贸易场的黄金投资业务已经很成熟,投资者的利益能够得到有效的保障。鉴于很多新手对国内现货黄金平台不太了解,下面小编为大家介绍“国内十大正规现货交易平台排名(2022最新

    2022年6月29日
    267
  • 连载:面向对象葵花宝典:思想、技巧与实践(38) – 设计模式之道

    连载:面向对象葵花宝典:思想、技巧与实践(38) – 设计模式之道

    2022年1月23日
    45

发表回复

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

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