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

C语言关于指针函数可变参数的使用方法和打印相应数据

 通过使用四个函数来实现 指针函数的可变参数操作;

四个函数分别为:

#include <stdarg.h>va_list ap;          //初始化 参数列表指针
va_start(ap, count); //将ap指针指向第一个参数COUNT 这个是必须存在的 否则无法定位到后面的参数
va_arg(ap, int);     //这个是按顺序读取写入的参数 每运行一次只能读取一个 不用的数据,需要用不同的 //类型去接受  我试验过的有 char* int double 这些都可以读取出来  
va_end(ap);          //释放ap指针的内容 防止函数运行结束后内存泄漏;                    

 下面是我的测试程序:

#include <stdarg.h>
#include <stdio.h>void my_sum(int count, ...);void (*funtion)(int count, ...);void  add(int count, ...) {va_list ap;int a;int b;int sum = 0;int i = 0;//sum += va_arg(ap, int);va_start(ap, count);//用于标记这个COUNT的地址 为寻找后面的参数提供解决办法printf("%d \n", va_arg(ap, int));printf("%d \n", va_arg(ap, int));printf("%f \n", va_arg(ap, double)); // float 不可行   原因 : 未知printf("%s \n", va_arg(ap, char *));printf("%c \n", (char)va_arg(ap, int));// 这个 我也有一点不理解 为什么va_arg(ap, char)  不能够输出// 我的理解是 va_arg(ap, int) 是一个整型 然后将其变为Char型就可以输出一个R// 我计划尝试一下floatprintf("%f \n", (float)va_arg(ap, double)); //这个可以正常输出 但是我还是不清楚为什么 只能是 DOUBLE   !-0-!va_end(ap);}int main() {funtion = add;(*funtion)(3, 15, 15, 2.555555, "asdfghjkl", 'R', 2.5);return 0;
}void my_sum(int count, ...) {//将要用来存放需要的某个可变参数的指针的信息va_list ap;char *prompt;int sum = 0;//开始的初始化,其中ap含有指向可变参数的指针的信息,count是当前函数中最后一个非可变的参数(这样才能定位).va_start(ap, count);//获取并返回下一个可变参数的值,第一个参数是ap不用说了,第二个参数是要获取的参数的类型。//根据文档,如果类型指定错误了,或者没有下一个可变参数了,那么返回的结果是随机的。prompt = va_arg(ap, char *);printf("%s\n", prompt);int i;for (i = 0; i < count; ++i) {sum += va_arg(ap, int);}//使用完可变参数之后要用这个来释放资源va_end(ap);printf("%d\n", sum);}

测试结果:

相关文章:

C语言关于指针函数可变参数的使用方法和打印相应数据

通过使用四个函数来实现 指针函数的可变参数操作&#xff1b; 四个函数分别为&#xff1a; #include <stdarg.h>va_list ap; //初始化 参数列表指针 va_start(ap, count); //将ap指针指向第一个参数COUNT 这个是必须存在的 否则无法定位到后面的参数 va_arg(a…...

centos7下升级openssh9.4p1及openssl1.1.1v版本

背景&#xff1a;客户服务器扫描出一些漏洞&#xff0c;发现和版本有关&#xff0c;漏洞最高的版本是9.3p2&#xff0c;所以我们安装一个openssh9.4p1版本及openssl1.1.1v版本 虽然我们进行了镜像备份&#xff0c;为了安全先安装telnet以防止升级失败无法通过ssh连接服务器 一…...

vue+element弹窗内---下拉框定位问题解决(方法之两种)

问题: 加了 :popper-append-to-body"false" 这个属性也不好用时 可以试试这个 解决方法1️⃣: 第一步: 找到el-select标签添加(popper-class"popperClass")属性-----如下图 第二步:在css中添加如下代码即可 ::v-deep .popperClass{ top:auto !import…...

MATLAB二维与三维绘图实验

本文MATLAB源码&#xff0c;下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…...

usb个人总结

一、usb工具分析 1、不同的usb抓包工具抓包分析 2、USB抓包分析方式 外接usb分析仪分析 &#xff08;1&#xff09;力科usb分析仪 &#xff08;2&#xff09;HD-USB12 协议分析仪 &#xff08;3&#xff09;沁恒CH552 usb分析仪&#xff0c;软件工具USB2.0 Monitor (4)等等…...

进阶Docker2:数据卷和挂载目录

目录 准备 删除容器 创建并运行一个容器 数据卷&#xff08;Volumes&#xff09; 挂载数据卷 虚拟机端口映射 挂载目录&#xff08;Bind mounts&#xff09; 挂载目录 挂载文件 部署在线项目 docker 在容器中管理数据主要有两种方式&#xff1a; - 数据卷&#xff0…...

SHAP:最受欢迎、最有效的可解释人工智能工具包

在许多情况下&#xff0c;机器学习模型比传统线性模型更受欢迎&#xff0c;因为它们具有更好的预测性能和处理复杂非线性数据的能力。然而&#xff0c;机器学习模型的一个常见问题是它们缺乏可解释性。 例如&#xff0c;集成方法如XGBoost和随机森林将许多个体学习器的结果组合…...

语境化语言表示模型-ELMO、BERT、GPT、XLnet

一.语境化语言表示模型介绍 语境化语言表示模型&#xff08;Contextualized Language Representation Models&#xff09;是一类在自然语言处理领域中取得显著成功的模型&#xff0c;其主要特点是能够根据上下文动态地学习词汇和短语的表示。这些模型利用了上下文信息&#xf…...

和MATLAB相关的设置断点的快捷键

一个朋友在修改错误的时候&#xff0c;有个操作震惊到我了。 他把迭代次数从1000减小到100&#xff0c;就可以快速仿真完。 废话不多说&#xff0c;直接上快捷键。 F12&#xff1a;设置或者清楚断点。 F5&#xff1a;运行 F10和F11都是步进&#xff0c;但是两者有区别。 …...

实人认证(人像三要素)API:加强用户身份验证

前言 在当今数字化时代&#xff0c;随着互联网应用的广泛普及&#xff0c;用户身份验证的重要性日益凸显。实人认证&#xff08;人像三要素&#xff09;API作为一种新型的身份验证方式&#xff0c;凭借其高效、安全和便捷的特性&#xff0c;正在成为加强用户身份验证的强大工具…...

美易官方:一路火到2024!英伟达还在创造历史

一路火到2024&#xff01;英伟达还在创造历史&#xff1a;两周来市值增逾千亿美元 自今年8月以来&#xff0c;英伟达的股价一直处于快速上涨的轨道上。最近两周&#xff0c;英伟达的市值更是增加了超过1000亿美元&#xff0c;这主要得益于其数据中心业务的持续强劲表现和游戏业…...

6个免费/商用图片素材网站

推荐6个免费可商用图片素材网站&#xff0c;收藏走一波~ 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 我推荐过很多次的设计素材网站&#xff0c;除了设计类素材&#xff0c;还有很多自媒体可以用到的高清图片、背景图、插画、视频、音频素材等等。网站提供的图…...

Java使用IText生产PDF时,中文标点符号出现在行首的问题处理

Java使用IText生成PDF时&#xff0c;中文标点符号出现在行首的问题处理 使用itext 5进行html转成pdf时&#xff0c;标点符号出现在某一行的开头 但这种情况下显然不符合中文书写的规则&#xff0c;主要问题出在itext中的DefaultSplitCharacter类&#xff0c;该方法主要用来判断…...

npx和npm有什么区别,包管理器yarn的使用方法,node的版本管理工具nvm使用方法

文章目录 一、npx介绍及使用1、npx 是什么2、npx 会把远端的包下载到本地吗?3、npx 执行完成之后&#xff0c; 下载的包是否会被删除&#xff1f;4、npx和npm的区别 二、yarn介绍及使用1、Yarn是什么&#xff1f;2、Yarn的常见场景&#xff1a;3、Yarn常用命令 三、nvm介绍及使…...

【网络技术】【Kali Linux】Wireshark嗅探(九)安全HTTP协议(HTTPS协议)

一、实验目的 本次实验是基于之前的实验&#xff1a;Wireshark嗅探&#xff08;七&#xff09;&#xff08;HTTP协议&#xff09;进行的。本次实验使用Wireshark流量分析工具进行网络嗅探&#xff0c;旨在初步了解安全的HTTP协议&#xff08;HTTPS协议&#xff09;的工作原理。…...

POI-tl 知识整理:整理3 -> 动态生成表格

1 表格行循环 &#xff08;1&#xff09;需要渲染的表格的模板 说明&#xff1a;{{goods}} 是个标准的标签&#xff0c;将 {{goods}} 置于循环行的上一行&#xff0c;循环行设置要循环的标签和内容&#xff0c;注意此时的标签应该使用 [] &#xff0c;以此来区别poi-tl的默认标…...

chatgpt和文心一言哪个更好用

ChatGPT和文心一言都是近年来备受关注的人工智能语言模型。它们在智能回复、语言准确性、知识库丰富度等方面都有着较高的表现。然而&#xff0c;它们各自也有自己的特点和优势。在本文中&#xff0c;我们将从这几个方面对这两个模型进行比较&#xff0c;以帮助您更好地了解它们…...

移动端开发进阶之蓝牙通讯(一)

移动端开发进阶之蓝牙通讯&#xff08;一&#xff09; 移动端进阶之蓝牙通讯需要综合考虑蓝牙版本选择、协议栈使用、服务匹配、设备连接、安全性和硬件支持等方面。 一、蓝牙版本选择 根据实际需求和应用场景选择合适的蓝牙版本&#xff1b; 1.0&#xff0c;1M/s。 2.0EDR…...

一个完整的流程表单流转

1.写在前面 一个完整的流程表单审批&#xff08;起表单-->各环节审批-->回退-->重新审批-->完成&#xff09;&#xff0c;前端由Vue2jsElement UI升级为Vue3tsElement Plus&#xff0c;后端流程框架使用Flowable&#xff0c;项目参考了ruoyi-vue-pro(https://gite…...

2024杭州国际智慧城市,人工智能,安防展览会(杭州智博会)

在智能化浪潮的冲击下&#xff0c;我们的生活与环境正在经历一场深刻的变革。这是一场前所未有的技术革命&#xff0c;它以前所未有的速度和广度&#xff0c;改变着我们的生活方式、工作方式、思维方式和社会结构。在这场变革中&#xff0c;有的人选择激流勇进&#xff0c;拥抱…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...