C++ 函数笔记(信奥校队专用)
一、函数分类
函数就像一个个“小工具箱”,每个工具箱能完成一件特定的事情。使用函数,可以让我们的代码更整洁,避免重复写相同的代码。
1. 系统函数
* 定义:别人(C++ 标准库)已经写好,我们直接拿来用的函数。
* 特点:需要包含对应的头文件,就像借工具要先找到工具箱在哪。
* 例子:
* cout、cin —— 输入输出,需要 #include <iostream>
* sqrt(x) —— 计算平方根,需要 #include <cmath>
* pow(x, y) —— 计算 x 的 y 次方,也需要 #include <cmath>
* rand() —— 生成随机数,需要 #include <cstdlib>
2. 自定义函数
* 定义:自己写的函数,用来解决自己的问题。
* 特点:可以根据需要任意定义,想实现什么功能就写什么。
* 例子:打印一排星星、计算两个数的和、判断一个数是不是素数……
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、函数定义 & 调用
1. 定义函数(造工具箱)
* 语法:
* 说明:
* 返回类型:函数返回的数据类型,比如 int(整数)、double(小数)、void(没有返回值)。
* 函数名:自己取名字,最好能看出函数的作用(比如 add、print)。
* 参数列表:调用函数时传给函数的数据,可以没有(空括号),也可以有多个(用逗号隔开)。
* 函数体:花括号里的代码,实现具体功能。
* return:如果返回类型不是 void,必须用 return 返回一个值,值的类型要和返回类型一致。
* 例子:
2. 调用函数(用工具箱)
* 语法:函数名(参数)
* 执行过程:遇到函数调用,程序会跳进函数里面执行,执行完再回到调用处继续往下走。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、函数传参 & 变量生命周期
1. 参数传递
* 形参:定义函数时写的参数,比如 int a, int b,它们是“形式上的参数”。
* 实参:调用函数时传给函数的实际值,比如 3, 5。
* 传递过程:调用时,把实参的值复制一份给形参,函数内部使用形参。
* 注意:函数内部修改形参,不会影响实参(除非用引用,但这是后面的知识)。
2. 变量的生命周期
变量不是永远存在的,它有自己的“出生”和“死亡”时间,这叫生命周期。
* 局部变量
* 出生:函数被调用时,函数内部定义的变量(包括参数)被创建。
* 死亡:函数执行完毕,这些变量就被自动销毁,不能再用。
* 作用域:只在它所在的函数内部有效。
* 全局变量
* 出生:程序开始运行时创建。
* 死亡:程序结束时销毁。
* 作用域:整个程序的所有函数都能访问和修改。
* 定义位置:在所有函数外面(通常在 #include 下面)。
* 局部变量和全局变量同名:
* 在函数内部,局部变量会“遮盖”全局变量,优先使用局部变量。
* 建议:尽量少用全局变量,因为容易被不小心修改,导致程序难调试。能用局部变量就用局部变量。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四、为什么要使用函数?(必要性和优势)
1. 避免重复代码(复用)
* 如果没有函数,你要多次执行相同操作,就得一遍遍写相同的代码,既麻烦又容易出错。
* 例子:要计算多个圆的面积,每次都得写 3.14 * r * r。有了函数,只需写一次,然后调用它。
2. 让程序更清晰(模块化)
* 把一个大问题分解成多个小函数,每个函数只做一件事。这样主程序(main 函数)就像一张“任务清单”,一目了然。
* 比如,做一道复杂的数学题,可以分成“输入数据”、“计算”、“输出结果”三个函数。
3. 方便调试和修改
* 如果程序出错了,可以单独测试每个函数,快速定位问题。
* 如果想修改某个功能,只需要改对应的函数,其他地方不用动。
4. 团队合作
* 写大程序时,可以让不同的人写不同的函数,最后组装起来,互不影响。
5. 让思路更清晰
* 写函数时,你会思考它需要什么数据(参数),返回什么结果,这能帮助你更好地理解问题。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总结
* 函数:把一段代码打包,起个名字,以后随时调用。
* 系统函数:现成的,直接拿过来用。
* 自定义函数:自己写的,想干啥就干啥。
* 参数:给函数送原材料。
* 返回值:函数加工后送出来的成品。
* 局部变量:函数内部用,用完就丢。
* 全局变量:所有人都能用,但容易惹麻烦。
记住:多用函数,能让你的代码更漂亮、更聪明!
课堂笔记