成都创新互联网站制作重庆分公司

C语言,函数形参与实参个数不一致问题

​ 最近阅读工程代码的时候,同一个函数,不同场景调用时,输入的实参个数不一样,但是编译却没有问题。查看函数的定义,相关的C文件里并没有给形参指定默认值,这就很奇怪了。

创新互联专注于企业营销型网站建设、网站重做改版、黔西南州网站定制设计、自适应品牌网站建设、H5场景定制成都商城网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为黔西南州等各大城市提供网站开发制作服务。

​ 最终,发现在函数相关的头文件里有给形参指定默认值。这就能解释通为什么形参和实参个数不一致,编译能正常通过的问题了。下面是示例代码。

/*parainput.c 文件内容*/

#include  
void sum(int a,int b,int c)
{
	int result = a + b + c;
	printf("result = %d\n",result);	
} 
/*parainput.h 文件内容*/

#ifndef _PARAINPUT_H
#define _PARAINPUT_H

void sum(int a,int b=1,int c=2);

#endif
/*main.c 文件内容*/
#include 
#include "parainput.h" 

void test_01(void)
{
	int a = 10;
	sum(a);
	return;
}

void test_02(void)
{
	int a = 10,b = 20;
	sum(a,b);
}

void test_03(void)
{
	int a = 10,b = 20,c = 30;
	sum(a,b,c);
}
int main(void)
{
	test_01();
	test_02();
	test_03();
	
	return 0; 
}

用G++进行编译,最终运行结果如下。

result = 13
result = 32
result = 60

--------------------------------
Process exited after 0.006126 seconds with return value 0
请按任意键继续. . .

标题名称:C语言,函数形参与实参个数不一致问题
文章转载:http://cxhlcq.com/article/dsoijcp.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部