C语言 可变参数列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 可变参数列表相关的知识,希望对你有一定的参考价值。
就是<stdarg.h>这个头文件里面的可变参数列表,不是很会用,编出来的程序总是错的,谁能给我讲讲那几个参数的用法? 这个东西用的地方多吗?求几个数字的最大的一个,还是不对。。。。。#include<stdio.h>#include<stdarg.h>float max_list(float number,...) ;void main() float a,b,c,d; a = 3; b = 4; c = 5; d = 6; printf("%f",max_list(4,a,b,c,d)); getch();float max_list(float number,...) va_list var_arg; int count; float consequence = 0; float m ; va_start(var_arg,number); /* for(count = 0 ; count < number;count+=1) if((m=va_arg(var_arg,float))>=consequence) consequence = m; */ while((m=va_arg(var_arg,float))>=0) if(m>consequence) consequence = m; va_end(var_arg) return consequence ;
虽然我对可变参数表不太懂,但是我可以看得出你的/* */那段显然有问题,你for循环4遍,但你获取可变参数值的时候你没有告诉获取第几个值,那个count肯定不仅仅是个循环变量,它在循环体中肯定还要用来提示获取第几个参数,也就是你注意一下if里的m=va_arg(var_arg,float)这个语句,肯定要用到float 参考技术A 建议你格式弄好再传。C语言奇淫技巧之函数的可变参数
参考技术A前言:
有时候我们需要一个函数接口可以支持可变参数以提高其泛化能力,比如说定义一个求和函数,对传入的所有参数进行求和并返回,C语言提供了一种可变参数的方式来帮助我们实现。
原理:
函数参数是从右向左线性连续依次入栈,如果我们可以知道可变参数列表的前一个参数的地址和类型,就可以得知可变参数列表的首地址,进而根据每个参数的类型取出相应的数据。简单来说就是将栈里面的数据,按照指定类型的大小,依次取出。
具体实现:
步骤解析:
以上是关于C语言 可变参数列表的主要内容,如果未能解决你的问题,请参考以下文章