• C 函数可变参数


    C 函数可变参数

    C 语言中用 ... 表示可变参数,例如:

    void fun(int x ...)
    

    头文件 cstdarg.h 中包含可变参数类型va_list和处理可变参数的三个宏:

    • va_list 实际上是char*类型
    • va_start(ap,v),确定可变参数的起始地址,该宏定义为:
    #define va_start _crt_va_start
    #define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )
    
    • va_arg(ap,type),根据type类型取参数地址,该宏定义为:
    #define va_arg _crt_va_arg
    #define _crt_va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
    
    • va_end(ap),将可变参数地址置为0
    #define va_end _crt_va_end
    #define _crt_va_end(ap)      ( ap = (va_list)0 )
    

    例子:

    #include <iostream>
    #include <cstdarg>
    
    using namespace std;
    
    /*
    可变参数函数
    */
    
    void error(int x ...){
    	va_list arg;
    	va_start(arg, x);
    	while (true){
    		char* p = va_arg(arg, char*);
    		if (p == NULL) break;
    		cout << p << endl;
    	}
    	va_end(arg);
    }
    int main(){
    	error(1, "hello", "world", "haha",NULL);//要使用NULL来标记参数列表尾
    	return 0;
    }
    
  • 相关阅读:
    开淘店记录
    广告轮播效果
    loading事件加载效果
    正则表达式摘要
    cookie存取数据分析
    js 空格与回车处理
    数据对象型转换为数组型
    变换闪烁效果
    eclipse配置新环境
    五小时轻松入门Python
  • 原文地址:https://www.cnblogs.com/shaolw/p/5565154.html
Copyright © 2020-2023  润新知