c++第五章知识总结

                     第五章———函数

一、函数基础
1、函数是一个命名的代码块,通过调用函数可以执行相应的代码。
2、函数定义的语法形式为
返回类型 函数名(参数列表) { 函数体 }
3、函数的参数列表不能省略;如果函数没有任何参数,可以用空参数表或void参数表表示
4、函数必须指定一个返回类型
函数返回类型可以是内置类型、复合类型或用户自定义的类类型;函数和内置数组不能用作返回类型,但是,可以返回函数指针和数组首地址;如果函数不返回任何结果,将其返回类型声明为void。
5、调用执行函数的形式
函数名(实参列表);
形参(函数定义中的参数)和实参(调用函数时提供的数据),函数调用时提供的实参个数和类型必须与函数定义中的形参个数和类型匹配。
6、函数声明
函数在使用之前必须声明,一个函数可以在程序中多次声明,函数定义也可以被用作声明,但是函数在程序中只能定义一次
函数声明的形式:
返回类型 函数名(参数列表) ;
二、参数传递
1、参数传递是指用函数调用的实参来初始化函数形参存储区的过程,函数的形参是局部对象,仅在函数的作用域内可见,形参的类型决定了实参初始化形参的方式。
2、传值:按值传递参数;传引用,按引用传递参数;传指针:使用指针参数是传地址值。
3、按值传递
把实参的值复制到形参的存储区中,即用实参值初始化形参,默认情况下,函数的返回值是按值传递的
4、按值传递参数的特点:简单直接且不会改变实参的内容
按值传递参数不适合的情况:
大型的类对象或结构体变量作为实参时
必须要修改实参的值时,如交换两个变量的值
5、传值、传指针还是传引用?
对于内置类型的小对象,传值的方式更简单直接;如果想在函数内改变实参,使用传引用或传指针的方式;传指针的语法比引用复杂一些,但使用起来更清晰明确;对于类类型的对象,尽量使用引用传递参数,效率更高。
使用const限定可以避免实参被修改
特殊要求
数组和函数作参数时必须传指针
拷贝构造函数的参数必须传引用
6、数组作参数时,将传递数组第一个元素的地址
三、返回类型和return语句
1、return语句有两种形式:
return;(用在返回类型为void的函数中,不是必需的)
return 表达式;
2、将函数声明为返回引用,则不需要对return语句中的表达式进行复制,而是返回对象本身
函数返回的引用仅是它所指向对象的一个别名。函数的返回类型决定了函数调用表达式的类型,以及是否是左值:
调用一个返回引用的函数得到左值
其他返回类型得到右值
3、main函数的返回类型为int,作为程序返回给系统的值,main()函数返回0表示执行成功,返回非0值表示执行失败
4、尾置返回类型的语法形式
auto 函数名(形参列表) -> 返回类型;
其语法形式对返回类型较复杂的函数最有效
四、函数重载
1、C++函数重载机制
多个函数可以共享同一个函数名,针对不同的参数类型提供不同的操作
重载函数:同一个作用域内的几个函数名字相同但形参列表不同,功能类似。
2、重载函数的参数表必须不同或参数个数不同,或参数类型不同
五、函数特征
1、constexpr函数是指能应用于常量表达式的函数,需使用关键字
2、使用的条件:函数体只有一条语句,且必须是return语句,如果有其他语句,只能是再运行时不执行任何操作的语句;函数必须返回值,不能是void函数;在使用前必须有定义;return语句表达式中不能使用非常量表达式得函数、全局数据,且必须是运行时才能调用。
六、作用域和存储类别
1、作用域包括局部作用域、文件作用域、全局作用域、命名空间作用域和类作用域。
2、全局变量和全局函数
在全局作用域中可以定义函数和变量;全局的内置类型变量,不指定初始值时被初始化为0值;全局变量和非inline 全局函数在程序中只能定义一次,在其他地方使用时需要声明;关键字extern 用来声明全局对象,可以在同一文件中或同一程序的不同文件中多次出现
3、局部对象分为自动对象、静态对象和寄存器变量。局部对象的作用域从其声明点开始,到函数结束处为止,局部对象默认为自动存储,可以通过存储类别关键字static 和register 对其进行修改
4、函数中的局部变量和函数的形参是局部自动对象,函数中频繁使用的自动变量可以用register 关键字声明。
5、同一作用域内不能有同名的实体,但是不同的作用域中可以有同名的对象
6、C++程序中对象的存储类别有:静态存储;
自动存储;动态存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值