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

C语言学习,标准库 <stdarg.h>

<stdarg.h> 是 C 标准库中的头文件,它提供了一种机制来处理可变参数函数。<stdarg.h> 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。可变参数的函数通在参数列表的末尾是使用省略号 ... 定义的。

类型定义:
va_list:这是一个用于存储可变参数信息的类型。通常,你会定义一个 va_list 类型的变量来操作可变参数列表。
宏定义:
va_start:用于初始化 va_list 变量,将其指向参数列表中的第一个可变参数。你需要传入 va_list 变量和最后一个传递给函数的已知固定参数(即省略号之前的参数)。
va_arg:用于获取 va_list 指针所指向的参数,并将指针移动到下一个参数的位置。你需要指定要访问的参数的类型。
va_end:用于清理 va_list 变量。这是一个好习惯,尽管在某些实现中可能不严格要求。
va_copy(可选):用于复制 va_list 变量。这不是所有实现都提供的,但它在一些情况下很有用,比如当你需要在处理参数列表的过程中保留原始参数列表的副本时。

示例: 可变参

#include <stdio.h>  
#include <stdarg.h>  
  
void print_numbers(int count, ...) {  
    va_list args;  
    va_start(args, count);  
    for (int i = 0; i < count; i++) {  
        int num = va_arg(args, int);  
        printf("%d ", num);  
    }  
    va_end(args);  
    printf("\n");  
}  
  
int main() {  
    print_numbers(3, 10, 20, 30); // 输出: 10 20 30  
    print_numbers(5, 1, 2, 3, 4, 5); // 输出: 1 2 3 4 5  
    return 0;  
}

 


http://www.mrgr.cn/news/63965.html

相关文章:

  • Qt 学习第十五天:连接mysql数据库进行增删查改操作
  • 在工作中常用到的 Linux 命令总结
  • 【染色时间】
  • 关于使用雷池社区版需要知道,什么是 IPv4 地址?
  • GaussDB Ustore存储引擎解读
  • Linux中部署PostgreSQL保姆级教程
  • World of Warcraft [CLASSIC][80][the Ulduar] BOSS 08 09 10 11
  • codeblocks-20.03mingw-setup.exe安装教程
  • “微软蓝屏”事件暴露了网络安全哪些问题?
  • 基于javase 的超市收银管理系统
  • 使用 OpenCV 在 Python 中绘制基本图形
  • 全国高校计算机能力挑战赛 Python
  • flutter ios ffi 调试 .a文件 debug可以 release 不行
  • RabbitMQ最全教程-Part2(高阶使用)
  • 嵌入式Linux系统中GPIO实验详解
  • vscode markdown-image 图片粘贴自动上传到本地目录设置
  • 什么品牌的护眼台灯比较好?五款护眼效果比较明显的护眼台灯
  • 对于图像的关键点数据提取openpose
  • 第三百零八节 Log4j教程 - Log4j日志到数据库
  • AWS RDS MySQL内存使用
  • Caffeine 手动策略缓存 put() 方法源码解析
  • Copilot功能
  • 单例模式的五种实现方式及优缺点
  • 从0开始学统计-什么是Z-score
  • 【国产MCU系列】-GD32F4开发环境搭建(基于Embedded Builder)
  • 自动化测试工具Ranorex Studio(十九)-其他编辑选项