首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言函数的参数的一个小疑点

2012-05-20 
C语言函数的参数的一个小问题比如在某个程序内:一个函数的定义为:function(x,y,z),在调用这个函数时的情况

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;

}


热点排行