C语言函数下----函数重载

16 篇文章 2 订阅

(一)带默认值行参数的函数

     函数在定义时可以预先声明默认的行参数。调用时如果给实参,则采用实参初始化形参,,如果没给实参,则采用预先声明的默认形参值。

注意:有默认的形参必须在形参列表的最后。即有默认值的形参右面,不能出现无默认值的形参。因为在函数调用中,实参与形参是按从左向右的顺序建立对应关系的。

例如:int add(int x=1,int y=2,int z=3);

           int add(int x=1,int y ,int z=3);×

           int add(int x=1,int y ,int z=3); ×

      默认形参值应该在函数原型中给出,例如:
      在相同的作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义。即使前后定义的值相同也不行。这里作用域是指直接包含着函数原型说明的大括号所界定的范围, 注意,函数的定义也属于声明,这样,如果一个函数在定义之前又有原型声明,默认形参值需要在原型声明中给出,定义中不能再出现默认形参值。

(二)函数重载

重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。

两个重载函数必须在下列一个或两个方面有所区别:

1、函数的参数个数不同。

2、函数的参数类型不同

3、参数类型顺序不同,

当将要定义一组函数,使它们执行一系列的操作,但是它们是应用在不同的参数类型上的。此时我们可以选择重载函数。

例如: int max (int,int); //返回整数的最大值;

double max (double,double); //返回两个小数的最大值;

 

 #include <iostream>
using namespace std;
//类型不同  C语言没有函数重载
int Max(int a, int b) 
{
	return a > b ? a : b;
}
float Max(float a, float b) 
{
	return a > b ? a : b;
}
//顺序不同
// error C2084: 函数“int Max(int,int)”已有主体
//int Max(int b, int a) 
//{
//
//}
void  print(int a, char c) 
{

}
void print(char a, int c) 
{

}
//数目不同
void print(int a, int b, int c) 
{

}
 
int main() 
{
	printf("%d\n", Max(1, 2));
	printf("%.1f\n", Max(1.1f, 2.2f));   //错误,C++对于类型要求比C语言严格
	1L;		//long
	1.1f;	//float
	1u;	    //unsiged;
	//默认的小数是double;
	return 0;
}

思考一下:

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘 关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值