C语言函数的参数的一个小问题
比如在某个程序内:
一个函数的定义为:function(x,y,z),
在调用这个函数时的情况是这样的:function(a,b,c),
这里函数类型和参数类型都省略了,我只想问一问参数传递的问题,在调用这个functin函数的时候,
它的三个实参 a,b,c 是否必须都是传入的参数?
如果其中的一个或两个参数值不传入可不可以?
传入的实参能不能作为函数的返回值返回?
另外问一下,我一般看到的函数都是返回单个的值,函数的返回值能不能是两个或者两个以上?
[解决办法]
如果其中的一个或两个参数值不传入可不可以? 不行,不过C++中可以默认参数,不过使用时也有限制。
传入的实参能不能作为函数的返回值返回? 可以,但是C的传递都是值拷贝的,要注意结构体内指针的问题。
函数的返回值能不能是两个或者两个以上? 不可以,函数只能返回一个东西。但是可以变通,比如讲多个数据弄到一个结构体内,讲结构体返回。
[解决办法]
1、在c语言里面,如果函数定义中定义了n个形参,那函数调用时就必须有n个类型与形参一一对应的实参,而且顺序不能错.
2、返回值与实参之间没有什么直接的联系,可以根据功能的需要,确定不同的返回值,对于同一种状态下只能返回值一个值,这个值可以是数据的值或者地址。
[解决办法]
如果不能确定传入的参数的数量,可以使用可变参数,c中的函数int printf(const char * format, ...)就是使用可变参数;例如:
FILE *logfile;
int WriteLog(const char * format, ...)
{
va_list arg_ptr;
va_start(arg_ptr, format);
int nWrittenBytes = vfprintf(logfile, format, arg_ptr);
va_end(arg_ptr);
return nWrittenBytes;
}
…