可变参数列表
来源:互联网 发布:陕西网络品牌推广公司 编辑:程序博客网 时间:2024/06/06 21:03
C语言的可变参数列表没有什么神秘,就是从已知的变量地址根据参数内存的分配是连续的来找出后边的所有参数
不信,你看底下代码
#include<iostream>using namespace std;//#include<stdarg.h>typedef char* va_list;#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )#define va_end(ap) ( ap = (va_list)0 )//#include<stdarg.h>int Average(int argc, ...)//argc为要求平均数的个数{va_list pArg; // 声明一个指针, 用于持有可变参数va_start(pArg, argc); // 将 pArg 初始化为指向第一个参数int sum=0;for(int i = 0; i != argc; ++i) // 输出参数{sum+= va_arg(pArg, int);// 获取 pArg 所指向的参数 }va_end(pArg);//给 pArg 清零return (sum/argc);}int My_Average(int argc, ...){char*p = (char*)&argc +sizeof(argc);int sum=0;for(int i=0;i!=argc;++i){sum+= *((int*)p+i);} p=NULL;//防止这个指针再次被使用造成在未知内存中进行操作return (sum/argc); }int main(){ cout<<Average(2,'3','5')<<endl; cout<<My_Average(2,'3','5')<<endl;return 0;}
0 0
- Java可变参数列表
- 可变参数列表
- 关于可变参数列表
- 可变参数列表
- c++ 可变参数列表
- 可变参数列表
- cstdarg可变参数列表
- 可变参数列表
- java可变参数列表
- 可变参数列表
- Java 可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- /可变参数列表
- 可变参数列表
- 【暑假阅读推荐书目】经济篇
- 【特种兵PPT教程】如何在PPT中插入单选按钮、复选框?
- 利用QListView实现选择框
- 亿级Web系统搭建:单机到分布式集群
- 今天开始开博啦~
- 可变参数列表
- 一些收藏
- 对于稳定电压为10V的稳压管,当环境温度升高时,其稳定电压将?升,降,不变?
- 判断字符串str1是否包含str2
- 多态实现线性表
- 快速排序算法实现
- 传输层协议报文信息分析
- LeetCode: Game of Life
- java编写的基于TCP协议的多线程扫描端口程序