1. 函数概念
一个函数就是一个功能。
C语言没有类和对象,在程序模块中直接定义函数,被认为是面向函数的语言。
C++面向对象的程序设计里,主函数外的函数大多封装在类里面。主函数或其他函数通过类对象调用类中的函数。
main函数是系统调用的
2. 函数分类
从用户使用角度看,函数有两种:
(1)系统函数(库函数)
由编译系统提供,使用前需用#include指令包含相应的头文件,里面有对该库函数的声明内容。
(2)用户自定义函数
- 无参函数。即调用时,不需要也不能传参,一般只用来执行一组固定操作。可以返回,也可以不返回函数值。
- 有参函数。调用时,需传递参数。主调函数与被调用函数之间有数据传递:主调函数传数据给被调函数使用,被调函数可以返回,也可以不返回函数值.
3. 函数定义
对函数功能的确立,包括指定函数名、函数类型、形参及其类型,函数体等,它是一个完整的、独立的函数单位。
3.1 一般定义形式
无参:类型 函数名 (void) (void可以省略)
有参:类型 函数名 (形参类表: 参数类型 变量名)
类型为void 表示该函数无返回值后。
所有的函数都是平行的。定义函数时,是相互独立的,不能嵌套定义。即不能在定义一个函数的过程中定义另一个函数,也不能在主函数内定义。
3.2 形参和实参
形参: 在定义函数时,括号里的变量就是形式参数(formal parameter)
实参:在调用函数时,括号内的参数或表达式。(actual paremeter)
说明:
- 在未调用函数时,形参不占内存里的存储单元。直到被调用时,才被分配了内存以便接收实参传递的数据。调用结束后,形参所占内存单元会被释放,但实参单元还是保留着原值。
- 实参可以是变量、常量以及表达式(应有确定的值)。
- 定义函数时必须指定形参类型。
- 实参和形参的类型要相同或赋值兼容(向形参看齐)。
- 实参变量对形参变量的数据传递是“值传递”,即“单向传递”。(形参的存储单元是临时的,和实参属于不同单元)
3.3 返回值
return 语句 (可以是表达式),返回的函数值类型由该函数的类型决定。数值型数据会自动进行类型转换。