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语言 可变参数列表的主要内容,如果未能解决你的问题,请参考以下文章

C语言奇淫技巧之函数的可变参数

函数栈帧与可变参数列表 p1可变参数列表(完结)( C语言从入门到入土(进阶篇)

C语言可变参数

C语言可变参数

C语言可变参数

c语言如何封装一个带有可变参数的方法?