【C++】第7章:(二)函数的调用及声明、函数重载

函数的调用

主调函数通过函数名调用被调函数,如果被调函数中有形参,则主函数中的函数调用语句须给出对应的实参;

调用格式:
函数名(实参表)

调用方式:

  • 有返回值:
    m=funMax(x,y); //表达式形式的调用

  • 无返回值:
    fun(a,b); //语句形式的调用

函数的声明

在主函数前声明函数,则函数的定义可以在所有地方调用

三个关键部分

  • 函数的名字
  • 函数返回值的类型
  • 调用这个函数的时候必须提供的参数的个数和参数类型

语法格式

  • 数据类型 函数名(形参列表);

函数重载

定义:在同一个作用域中,一组具有相同函数名不同参数列表的函数
优点:减少函数名的数量,提高程序的可读性

其函数声明如下:

int sum(int a,int b) //求两个整数之和
{
  return a+b;
}
int sum(int a,int b,int c) //求三个整数之和
{
  return a+b+c;
}
double sum(double a,double b,double c) //求三个双精度数之和
{
  return a+b+c;
}

默认形参值

使用带有默认形参值的函数时要注意:

  • 指定默认值的参数必须放在形参列表中的最右端
void fun(int x=10,int y,int z); 错误!
void fun(int x,int y,int z=10); 正确
  • 在函数调用之前需要有函数声明,此时函数声明中给出默认值,在函数定义时不能再给出默认值,即使默认值相同也不可以(即默认值只能给一次),当实参有另一个数时默认值更新为实参的数

例题:求2个或3个正整数中的最大数,用带有默认参数的函数实现

#include <iostream>
using namespace std;
int max(int a,int b,int c=0); //函数声明,形参c有默认值
int main()
{
 int a,b,c;
 cin>>a>>b>>c;
 cout<<" max(a,b,c)=" <<max(a,b,c)<<endl; //输出3个数的最大值
 cout<<" max(a,b)="<<max(a,b)<<endl;//输出2个数中的最大值
 return 0; 
}
int max(int a,int b,int c) //函数定义
{
 if(b>a) a=b;
 if(c>a) a=c;
 return a;
}

return语句返回指针的情况

(这个部分听不懂!!!!)

输入个数不确定的学生成绩,返回存放成绩的首地址

#include <iostream>
using namespace std;
int *input(); //输入个数不确定的学生成绩,返回存放成绩的首地址
int *resize(int *p,int oldsize,int inc);
int main()
{
 int *head,*p;
 head=p=input();
 while(*p>=0)
 cout<<*(p++)<<endl;
 return 0;
}
//输入学生的成绩,以-1结束
int *input()
{
 int *p=NULL,c=0,i,x;
 cout<<"输入学生的成绩,以-1结束";
 cin>>x;
 while(x>0){
  p=resize(p,c,1);
  *(p+c++)=x;
  cin>>x;
 } 
 p=resize(p,c,1);
 *(p+c)=-1;
 return p;
 }
 
 int *resize(int *p,int oldsize,int inc)
{
 int *f,i;
 if(inc==0)
 return p;
 else {
  f=new int[oldsize+inc];
  if(inc>0)
   for(i=0;i<oldsize;i++)*(f+i)=*(p+i);
  else
   for(i=0;i<oldsize+inc;i++)*(f+i)=*(p+i);
 }
 delete[] p;
 return f; 
 } 

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值