第五章函数

  • 一个C+++程序由一个或多个源程序文件组成
  • 一个源程序文件由一个或多个函数组成
  • C++程序的执行从main函数开始
  • 调用其他函数后流程回到main函数
  • 再main函数中结束整个程序运行

函数的定义与声明

  • 函数的定义:
    在这里插入图片描述

  • 形式参数表name1,name2,namen

  • 每个形参必须同时给出形参的类型和名称 eg:int max(int a,b)是错误的

  • C++中函数的声明原则:

  • 函数定义在先,调用在后,调用前不必声明

  • 函数定义在后,调用在前,调用前必须声明

  • 函数的说明:

  • <类型><函数名>(<参数表>); int max(int x,int y);

函数体
  • 由{}括起来的语句序列构成,是实现函数功能的主体
  • 函数体中使用return语句返回函数执行结果 语句格式: return 表达式;//其中表达式类型应与函数返回值类型一致
  • 对于无返回值的函数,可以省略return
  • 程序设计时有时为使逻辑结构清楚,将主函数main放在程序开头,而将函数声明放在主函数main之前
函数定义与函数声明的区别
函数定义
  • 指函数功能的确立
  • 指定函数名、函数类型、形参及类型、函数体等
  • 是完整独立的单位
函数声明
  • 是对函数名、返回值类型、形参类型的说明
  • 不包括函数体
  • 是一条语句,以分号结束,只起一个声明作用
函数的调用
  • 函数定义后,并不能自动执行,必须通过函数调用来实现函数的功能
  • 函数调用,即控制执行某个函数
  • C++中,主函数可以调用其他子函数,而其他函数之间也可以互相调用
调用格式
  • 一般格式:<函数名>(<实际参数表>)//有参调用 或 <函数名>()//无参调用
  • <函数名>为要使用的函数的名字
  • <实际参数表>是以逗号分隔的实参列表,必须放在一对圆括号中。<实参表>与<形参表>中参数的个数、类型和次序应保持一致
  • 当调用无参函数时,函数名后的圆括号不能省略
  • 形参为简单类型变量,对应的实参可以是:常量,变量及表达式
  • 函数调用出现在表达式中
  • 函数调用过程是:
  • 为形参及函数体中的变量分配存储空间;
  • 用实参向形参传递数据;
  • 终端现行函数,将控制转交给被调用函数执行
  • 函数调用的返回过程是:
  • 先计算出返回语句中<表达式>的值
  • 若表达式值的类型与函数类型不一致,则强制转换
  • 将计算出的表达式值返回给调用函数作为返回值
  • 将控制由被调用函数转向为调用函数,执行后面语句
嵌套调用
  • 函数的嵌套调用是指在执行被调用函数时,被调用函数又调用了其他函数
递归调用
  • 函数调用过程中出现直接或间接调用该函数本身的情况,称为函数的递归调用
参数传递方式
  • 值传递:调用函数中的数据只是在调用之初通过实参向形参传递,之后各占有不同的空间,并且不再发生联系,互不干扰
  • 特点是:形参值的改变不影响实参
  • 实参本身的值在调用前后和调用过程中都不发生变化
  • 引用传递:引用(&)是标识符的别名
    在这里插入图片描述
带默认形参的函数

在这里插入图片描述

  • 默认形参值必须从右向左顺序声明,并且在默认形参值的右面不能有非默认形参值的参数(因为调用时实参取代形参是从左到右的顺序)
  • 在这里插入图片描述
  • 在相同的作用域内,默认形参值的说明应保持唯一,但如果在不同的作用域内,允许说明不同的默认形参
  • 在这里插入图片描述
内联函数

在这里插入图片描述

变量的作用域和存储类型

  • 标识符的作用域:
  • 作用域规则:标识符只在声明它或定义它的范围内可见,在此范围外不可见。
    在这里插入图片描述
  • 变量的分类:
  • 局部变量:
  • 在这里插入图片描述
  • 全局变量:
  • 在这里插入图片描述
变量的存储类型

在这里插入图片描述

  • auto型(自动变量)
  • static型(静态变量)
  • extern型(外部变量)
  • 在这里插入图片描述
  • register型(寄存器变量)
  • 在这里插入图片描述

内部函数和外部函数

在这里插入图片描述

系统函数和预处理命令

  • 文件包含命令#include
  • 宏定义命令#define
  • 在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值