|
|
发表于 2005-9-1 17:18:00
|
显示全部楼层
Re: 一个函数 int function( void ) 参数用void有什么作用啊?
没看到文章吗?那我帖一段代码,顺便解释一下:
//要用的东西都在这里
#include <stdarg.h>
//可变参数的函数
void function(int other, char *arg0, ...)
/*
对于未给出声明的参数,我们需要自己确定其类型和数量,系统帮不上什么忙。
一是预先设定好类型的排列顺序(用此函数的[B]人[/B]知道);
二是通过某种符号,像printf(char*,...)那样。
*/
{
//初始化参数列表,并定位到最后一个已知参数
va_list ap;
va_start(ap, arg0);
//假设我们已经知道了下一个参数是int型
//用如下方法获得它
int arg1 = va_arg(ap, int);
//假设我们已经知道了下一个参数是float型
//用如下方法获得它
double arg2 = va_arg(ap, double);
//必须调用,因为上面的过程可能会改变栈状态
va_end(ap);
}
看到了吗?float型变为double型了。
对于未声明的参数,编译器将它们自动提升至默认类型
既:char,short->int; float->double
而且,最后一个已知参数[B]必须[/B]是不会被提升的类型。
|
|