函数 C++编程模块
主要内容
- 1.基本知识
- 2.函数原型
- 3.按值传递函数参数
- 4.设计处理数组的函数
- 5.使用const 指针参数
- 6.设计处理文本字符串的函数
- 7.设计处理结构的函数
- 8.设计处理string的函数
- 9.递归函数,调用自身
- 10.指向函数的指针
1 基本知识
完成C++函数,需要做到三点:
- 定义
- 函数原型
- 调用
函数库中的函数
- 标准库头文件提供函数原型
定义函数
函数可分为两个类别
有返回值的类型,生成一个值返回给函数调用
返回值可以是 常量,变量,表达式。
返回值的限制:不能是数组。但是可以将数组作为结构和对象的组成部分。
无返回值的类型 void 函数
2 函数原型和函数调用
函数原型常常隐藏在include文件中
为什么需要函数原型?
举个栗子:
让助理去某间办公室取得文件,则向助理和某办公室的人表明自己的意图,助理去完成这项工作的时候,一定会提高效率。
同理
原型描述了函数到编译器的接口,它将返回值的类型和需要参数的类型和数量告诉编译器,编译器就像某间办公室的工作人员一样,知道怎么把文件给那位助理。其实编译器做的工作非常多:编译器通过参数可以提前捕捉到参数类型的错误,编译器也知道怎么检索,检索多少字节来从放置返回值的内存块中取得返回值(函数进行运算之后会把返回值复制到指定的CPU寄存器或者内存单元中将其返回)。
如果没有原型,编译器就需要从文件中进行查找,了解函数是如何定义的,而且函数也很有可能并没有在文件中。C++允许将一个程序放在多个文件中,单独编译文件,再将它们组合起来。如果不使用函数原型,就需要在函数使用之前定义它,但是这样并不是每次都可行,我们一般都把main函数放在最前面,它体现了程序的整体结构。
函数原型的语法
- 函数原型是条语句,分号结束,不要求提供变量的名字,只提供变量的类型。
函数原型的功能
- 编译器正确处理函数的返回值
- 编译器检查使用的参数数目是否正确
- 编译器检查使用的参数类型是否正确,如果不正确,则转换为正确类型(如果可行)。
3 函数参数和按值传递
C++通常按值传递参数
那两个曾经迷惑了多少初学者两个参数
参数 argument 实参
参量 parameter 形参
1 | double cube(double); //不必要定义变量名字 |
当函数被调用的时候,该函数会创建一个double类型的形参并赋值为 5
还有个值得注意的地方:
- 形参为 局部变量,是函数私有的,函数 调用 的时候创建,函数结束的时候 毁坏 变量,这样的叙述可能要为生动一些。这样的变量也叫作 自动变量 ,在程序执行的过程中自动被分配内存。
一道中奖概率算法
1-59 选 6 个数全中的概率。
R = (515049484746) / (654321)
算法该 用 -00-151/650/549/448/347/246/1 这种交替乘除可以防止中间结果超出了最大浮点数。
函数和数组
10 函数指针
函数名 及为函数地址