可变参数
来源:互联网 发布:linux u盘 删除分区表 编辑:程序博客网 时间:2024/06/13 05:51
<pre name="code" class="cpp">#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )//((sizeof(3) + sizeof(int) - 1) & ~(sizeof(int) - 1) )//((3 + 4 - 1) &~(4 - 1) ) 将n的值提升为int(可为其他类型)的整数倍// 例如 3->4 2->4 6->8 9->12#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )//arg = (char *)&n + _INTSIZEOF(n)// 将&n强制转化为字符指针#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )//(*(int *)((arg += _INTSIZEOF(n)) - _INTSIZEOF(n)) )//先将arg的地址加4并赋值给arg,然后将arg-4地址中内容强制转化并取出来#define va_end(ap) ( ap = (va_list)0 )// arg = char *0//arg = NULL 避免野指针//可变参数int Avg(int n, ...){va_list arg; //char *arg;va_start(arg,n);//得到一个字符指针argint sum = 0;for(int i=0; i<n; ++i){sum += va_arg(arg,int);//得到一个字符指针arg}va_end(arg); //arg = 0; //野指针return sum / n;}void main(){int avg = Avg(3,10,20,30);printf("avg = %d\n",avg);int *p = NULL;}
0 0
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 可变参数
- 商用市场迎来变革 谁能从激烈的竞争中脱颖而出?
- 【软考】---软件测试
- 今天使用Fragment的时候,出现了这个错误 IllegalStateException: Can not perform this action after onSaveInstanceState
- 上班挤公交
- win10兼容问题
- 可变参数
- 生成二维码
- @RequestMapping 用法详解之地址映射
- 屏幕适配问题
- 访问计数器
- Error LNK2001 无法解析的外部符号 的几种情况及解决办法
- 简化各种SQL有序计算的示例
- 一次对MKMapView的性能优化
- 2015年11月3日技术日志的开篇