c++笔记-函数1

函数
在这里插入图片描述
1、
函数是程序代码的一个自包含单元,用于完成某一特定的任务。

有的函数完成某一操作;
有的函数计算出一个值。

 通常,一个函数即能完成某一特定操作,又能计算数值。

2、 为什么要定义函数

避免重复的编程。

使程序更加模块化,便于阅读、修改。

一个程序必须有且只有一个main( )函数,C++从main( )函数开始执行。

C++语言中,所有函数都是平行独立的,无主次、相互包含之分。函数可以嵌套调用,不可嵌套定义。

3、类型
从用户使用的角度来看,C++有两种函数: 标准库函数和用户自定义的函数。
标准库函数由C+系统定义并提供给用户使用,可以看作对语言功能的扩充。例如,fabs函数、get 函数等都是标准库函数。
用户根据特写任务编系的函数称为自定义函数。自定义函数的形式与主的数的形式相似。
一般形式为:

类型  函数名 ([形式参数表 ]) 
{  
语句序列
}

   ##从函数的形式看,函数分两类:

(1) 无参函数。调用函数时不必给出参数。

(2) 有参函数。在调用函数时,要给出参数。在主调函数和被调用函数之间有数据传递。

4、函数定义

函数定义的第一行(可以分多行写)是函数首部(或称函数头),以大括号相括的语同子列为函数体。
其中,“函数名”是用户自定义标识符。“类型”是函数返回表达式的值的类型,简称为返回类型,可以是各种基本类型、结构类型或类类型。若无返回值,则使用空类型符void,“ 形式参数表”是用逗号分隔的参数说明列表。省略形式参数时不能省略圆括号,它是函数的识别符号。“函数体”中的语句序列可以包含各种合法C++语句。C++要求在定义函数时必须指定函数的类型。

在这里插入图片描述
形式参数表的一般形式为:

    类型 参数1,类型 参数2,...,类型 参数n。

参数是函数与外部传输数据的纽带。若函数的定义省略参数表,则称为无参函数:否则称为有参函数。
无参函数表示函数不依赖外部数据,执行独立的操作。


5、 形式参数和实际参数
 在定义函数时 形式参数和实际参数 函数名后面括号中的变量名称为形式参数。
 形参是被调函数中的变量;

在主调函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为实际参数。
实参是主调函数赋给被调函数的特定值。
实参可以是常量、变量或复杂的表达式,不管是哪种情况,在调用时实参必须是一个确定的值。

 
说明:
1、在函数调用前,形参并不占内存的存储单元,只有在函数开始调用时,形参才被分配内存单元。调用结束后,形参所占用的内存单元被释放。
2、实参可以是常量、变量或表达式,但要求有确定的值。
3、实参变量对形参变量的数据传递是"值传递",即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中实参、形参分占不同的单元。
实参与形参一一对应,类型应相同或赋值兼容。
4、不同的函数中可以使用相同的变量名和形参名,他们是不同的变量。



例题      定义一个无参函数, 输出问候语句。

void printmessage()
{  cout <<"How do you do!" << endl;  }

例题       定义一个函数, 求两个浮点数之中的大值。函数通过参数从外部接收两个浮点型数据,函数体中用retum语句返回结果值。

double max(double x, double y)
{     if(x>y)      return x;
else        return y;
}

如果一个函数没有返回表达式值,通常说这个函数没有返回值,函数返回类型用void,即函数体内的retum语句没带表达式,或可以省略retum语句。函数没有返回值不等于不能接收或修改外部数据,参数是函数与外部传递数据的重要纽带。

函数的返回值通过return语句获得。函数只能有唯一的返回值。

函数返回值的类型就是函数的类型。

return语句可以是一个表达式,函数先计算表达式后再返回值。

return语句还可以终止函数,并将控制返回到主调函数。

return 语句之后的代码是不能执行的代码。

一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。




6、函数调用

在这里插入图片描述
函数调用要做两件事情:指定函数地址,提供实际参数。函数名是函数的地址,实际参数
提供被调用函数执行任务所需要的信息及接收被调用的派里的信息。函数调用的一般形式为:
函数名([实际参数表]) //实际值

其中,“实际参数表”中的各参数用题号分用实际参数与被理位置上必须一一对应。不管函数定义是否有参数或者是否有返回值,都可以用两种形式调用:函数语句或函数表达式。
(1)函数语句
函数调用可以作为一个语句。例如,在以下主函数中,用语句调用例题定义的函数(问候语句):
int main()
{ printmessage() ;  }
(2)函数表达式
函数可以通过reum语句返回一个结果值,如果定义了这调用时需要使用函数的返回值,可以用表达式形式调用函数
      例如:
      ml= max(a, b);
      cout << max(ml, c) << endl;
(3). 函数参数

函数调用作为一个函数的实参。如m=max(a,max(b,c)); 


说明:
在一个函数中调用另一个函数需要具备条件:

(1) 首先被调用的函数必须是已经存在的函数。

(2) 如果使用库函数,应用#include命令将有关头文件"包含"到本文件中来。

(3) 如果使用用户自定义的函数,函数调用遵循先定义、后调用的原则,即被调函数应出现在主调函数之前;如果被调用函数出现在主调函数之后,则函数必须在主调函数之前进行声明。


如果使用用户自己定义的函数,而该函数与调用它的函数(即主调函数)在同一个程序单位中且位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。

float add(float a,float b );

函数声明的一般形式(又称为函数原型):

函数类型 函数名(参数类型1,参数类型2…);

函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2…);

float add(float ,float );

函数声明的位置可以在调用函数所在的函数中,也可以在函数之外。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值