2021-11-08

C++学习笔记(11)

1.函数定义由两部分组成:函数首部(是函数的接口,包括函数名,参数和返回值类型)和函数操作描述(函数体的语句序列)。
使用函数称为调用函数。

2.自定义函数的一般形式为:
类型 函数名 (形参表)
{
语句序列
}

第一行(也可以分多行写)是函数首部(函数头):
函数名是用户自定义的标识符;
类型是返回值的类型,简称为返回类型;
形参表是用逗号分隔的形式参数说明列表,省略形参不可省括号。

形参表的一般类型为:
类型 参数1,类型 参数2,类型 参数3
参数为函数与外部传输数据的纽带。
无参函数通常不依赖外部数据,独立操作。

以花括号相括的语句序列为函数体:
可以包含各种合法的C++语句。

3.调用函数(即指定函数地址(函数名),提供实际参数(即实参,提供信息和接收信息))
一般形式为:
函数名(实参表)
实参表以逗号分隔,实参与形参在个数,类型,位置上必须一一对应。

两种调用形式:
①函数语句:作为一个单独语句;
②函数表达式:用作表达式。

4.函数原型
函数原型没有实现代码,故不需要参数名,添加参数名是为了增加可读性,编译器会忽略这些参数名。

如果函数定义出现在程序第一次调用之前,则不需要函数原型声明,此时,函数定义就是函数原型的作用。

5.函数参数的传递
函数被调用前,形参没有存储空间;
函数被调用时,系统建立与实参对应的形参存储空间;
函数执行完毕,系统收回形参的临时存储空间。

6.值传递
实参的表达式的值被复制到对应的形参名所标识的对象中,形成形参的初值;传递后,函数体中的语句对形参的访问、修改都是在这个标识对象上操作,与实参对象无关。

在传值方式中,实参对形参进行了赋值操作,所以实参可以是各种能对形参对象赋值的表达式,若实参值和形参对象的类型不同,将按形参的类型进行强制转换,然后再赋值。

7.如果函数有返回值,则在函数执行return语句时,系统将创建一个匿名对象临时存放函数的返回结果,这个匿名对象在返回调用之后撤销。

8.有副作用的参数:存在赋值依赖关系的传值参数,即实参表达式之间有求值关联,在不同的编译器可能有不同的结果。
例:实参中有“++x”和另一个实参表达式又使用了x的值,那么从左往右和从右往左会有不同的结果。

9.默认参数必须在函数原型声明时设置;
若显式地指示实参值,则不使用默认值;若无则使用默认值。
默认参数必须是函数参数表的最右边(尾部)

默认值可以是常量、全局变量和函数调用,但不能是局部变量;(局部变量(Local Variable):定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。全局变量(Global Variable):定义:所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。)

默认参数可以用于内联参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值