va_list,va_start,va_arg,va_en

简介:    在代码中常见到可变参数。截取一段cocos2d-x的代码:     CCArray* CCArray::create(CCObject* pObject, ...){ va_list args; // 这个变量是指向参数的指针,typedef char *  va_list va_start(args,pObject);// 初始化args指针,第二个参数存放第

   在代码中常见到可变参数。截取一段cocos2d-x的代码:

   

CCArray* CCArray::create(CCObject* pObject, ...)
{
    va_list args; // 这个变量是指向参数的指针,typedef char *  va_list
    va_start(args,pObject);// 初始化args指针,第二个参数存放第一个可变参数的前一个参数。

    CCArray* pArray = create();
    if (pArray && pObject)
    {
        pArray->addObject(pObject);
        CCObject *i = va_arg(args, CCObject*); // 返回下一个参数,也就是第一个可变参数,第二个参数是要返回参数的类型
        while(i) 
        {
            pArray->addObject(i);
            i = va_arg(args, CCObject*);
        }
    }
    else
    {
        CC_SAFE_DELETE(pArray);
    }

    va_end(args); // 结束

    return pArray;
}

   

相关文章
|
C++
19、关于va_list,va_start,va_arg,va_end
前面,我总结过关于va_list,va_start,va_arg,va_end的一些知识点: http://www.cnblogs.com/mydomain/archive/2010/07/27/1785667.
914 0
|
6月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
975 1
|
5月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
5月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
6月前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
165 3
|
5月前
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估
|
5月前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法