(31)函数基础

函数

函数是一个命名了的代码块,我们通过调用函数执行相应的代码。函数可以有0个或多个参数,而且(通常)会产生一个结果。可以
重载函数,也就是说,同一个名字可以对应几个不同的函数。

一个典型的函数定义包括以下部分:返回类型、函数名字、由0个或多个形参组成列表以及函数体,形参以逗号隔开位于圆括号内。我们通过调用运算符来执行函数。调用运算符的形式是一对圆括号,它作用于一个表达式,该表达式是函数或者指向函数的指针;圆括号之内是一个用逗号隔开的实参列表,我们用实参初始化函数的形参。调用表达式的类型就是函数的返回类型。
如:
int plu(int i,int j) {
	return i + j;
}
void main() {
	int i = 0;
	i = plu(i, 5);
	cout << i << endl;
	system("pause");
}
函数调用完成两项工作:
一.用实参初始化函数对应的形参。
二.将控制权转移给被调用函数。此时,主调函数的执行被暂时中断,被调函数开始执行。

执行函数的第一步是(隐式)定义并初始化它的形参。
当遇到一条return语句时函数结束执行过程。和函数调用一样,return语句也完成两项工作:
一.返回return语句中的值(如果有的话)
二.将控制权从被调用函数转移回主函数。

形参和实参

实参是形参的初始值。第一个实参初始化第一个形参,第二个实参初始化第二个形参,以此类推,实参与形参存在对应关系。
实参的类型必须与对应的形参类型匹配,函数有几个形参,我们就必须提供相同数量的实参。因为函数的调用规定实参数量应与形参数量一致,所以形参一定会被初始化。

函数的形参列表可以为空,但是不能省略。
定义一个不带形参的函数:
void f1(){ }     //隐式地定义空形参列表
void f2(void){ } //显示地定义空形参列表


形参列表中的形参通常用逗号隔开,其中每个形参都是含有一个声明符的声明。即使两个形参的类型一样,也必须把两个类型都写出来:
int f3(int v1,v2){ }        //错误
int f4()(int v1,int v2){ }  //正确
任意两个形参都不能同名,而且函数最外层作用域中的局部变量也不能使用与函数参数一样的名字。

函数的返回类型

  大多数类型都能用作函数的返回类型。一种特殊的返回类型是void,它表示函数不返回任何值。函数的返回类型不能是数组类型或函数类型,但是可以是指向数组或者函数的指针。

局部对象

在C++语言中,名字有作用域,对象有生命周期:
   名字的作用域是程序文本的一部分,名字在其中可见
   对象的生命周期是程序执行过程中该对象存在的一段时间
形参和函数体内部定义的变量统称为局部变量,仅在函数的作用域内可见,同时局部变量还会隐藏在外部作用域中同名的其他所有声明。
   在所有函数体之外定义的对象存在于程序的整个执行过程中。此类对象在程序启动时别创建,直到程序结束时才会销毁。局部变量的生命周期依赖于定义的方式。

我们把只存在于块执行期间的对象称为自动对象。当块的执行结束后,块中创建的自动对象的值就变成未定义的了。

局部静态对象:在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即使对象所在的函数结束执行也不会对它有影响。
形式如:  
  static  int i = 0;

函数声明

和其他名字一样,函数的名字也必须在使用之前声明。类似于变量,函数只能定义一次,但可以声明多次。如果一个函数永远不会被我们用到,那么它可以只有声明没有定义。

函数的声明和函数的定义非常类似,唯一的区别是函数声明无须函数体,用一个分号替代即可,同时形参的名字也可以省略。
函数的三要素(返回类型、函数名、形参类型)描述了函数的接口,说明了调用该函数所需的全部信息函数声明也称作函数类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值