什么是函数??
基本概念
在编程中,函数(Function)是一段可重复调用的代码块,用于执行特定任务。函数通常有输入(参数)和输出(返回值),能够将复杂问题分解为更小的、可管理的部分。
函数的基本组成
一个完整的函数通常包含以下组成部分:
- 函数名:用于标识和调用函数的名称
- 参数列表:函数接收的输入值(可无)
- 函数体:包含实际执行的代码块
- 返回值:函数执行后返回的结果(可无)
函数定义的基本结构
C语言中函数定义的基本格式如下:
c
返回类型 函数名(参数列表) {
// 函数体
// 可执行语句
return 返回值; // 如果返回类型不是void
}
返回类型:
指定函数返回值的类型
可以是基本数据类型(int, float, char等)或自定义类型
如果函数不返回值,使用void
类型
函数名:
遵循C语言标识符命名规则
建议使用有意义的名称,如calculateSum()
、printResult()
通常采用小写字母和下划线的组合
参数列表:
包含在圆括号中,参数之间用逗号分隔
每个参数包括类型和名称
无参数时可以写void
或保持空括号()
函数体:
包含在大括号{}
内
包含变量声明、可执行语句等
实现函数的具体功能
return语句
代表结束
函数的作用
- 代码复用:避免重复编写相同代码
- 模块化:将复杂问题分解为简单任务
- 提高可读性:通过有意义的函数名使代码更易理解
- 便于维护:修改只需在函数内部进行,不影响调用代码
用c语言写出两数之和
c
#include <stdio.h>
// 函数声明
int add(int a, int b);
int main() {
int num1, num2, sum;
// 用户输入两个整数
printf("请输入第一个整数: ");
scanf("%d", &num1);
printf("请输入第二个整数: ");
scanf("%d", &num2);
// 调用add函数计算两数之和
sum = add(num1, num2);
// 输出结果
printf("两数之和为: %d\n", sum);
return 0;
}
// 函数定义:计算两数之和
int add(int a, int b) {
return a + b;
}
带有形参的函数
带有形参(形式参数)的函数是指在函数定义时,在函数名后的括号内声明的变量。这些变量用于接收函数调用时传入的实际参数值。

带有返回值的函数

定义函数的终极绝招
三个关键问题助你完美定义函数
1. 函数目的:明确任务
首先问自己:我定义这个函数是为了完成什么具体任务?
- 这是函数的核心,决定了函数体的内容
- 示例:计算两个数的和、验证用户密码、格式化日期显示等
- 任务越明确单一,函数就越容易理解和复用
2. 形参设计:所需资源
其次考虑:完成这个任务需要哪些输入资源?
- 这些将成为函数的形参(参数)
- 资源可能包括:
- 原始数据(如数字、字符串)
- 配置选项(如精度、格式)
- 回调函数(如事件处理器)
- 原则:只传入必要的参数,不多不少
3. 返回值:处理结果
最后思考:调用处是否需要使用这个函数的结果?
- 如果需要继续使用结果,必须明确返回值类型
- 如:计算结果、处理后的数据、状态标志等
- 如果只是执行操作不需要返回数据,则使用void
- 如:打印输出、保存文件、发送请求等
c语言中的注意事项
函数不调用就不执行:
在编程中,函数是一段封装好的可重用代码块,但仅仅定义函数并不会使其自动执行。函数必须被显式调用才能运行其中的代码。这就像是一本菜谱中的某道菜的做法,虽然写好了步骤,但只有当你真正决定要做这道菜并按照步骤操作时,这些步骤才会被执行。
函数名不能重复
函数名不能重复: 在同一个作用域内,函数名必须是唯一的。这就像在一个办公室里不能有两个同名的员工,否则在调用时会产生歧义。例如:
函数与函数之间是平级关系,不能嵌套定义
函数与函数之间是平级关系,不能嵌套定义: 在大多数编程语言中(如C、Java等),函数不能在其他函数内部定义。所有函数都是平行关系,就像公司里的各个部门是并列关系一样。例如:
c
int add(int a, int b); // 正确
int add(int a, int b); // 错误:重复定义
自定义函数写在main函数的下面,需要在上方申明
c
// 函数声明
int calculate(int x);
int main() {
// 使用calculate函数
int result = calculate(10);
}
// 函数定义
int calculate(int x) {
return x * 2;
}
return下面,不能编写代码,永远执行不到,属于无效的代码
函数的返回值类型为void,表示没有返回值,return可以省略不写如果书写了return,后面不能跟具体的数据,仅表示结束函数
C语言的两个常见函数
常见函数math和time

常见函数不过多介绍,如平常有需求,可以去cppreference.com去查

随机数

在C语言中,随机数实际上是伪随机数,其生成依赖于特定的数学方程。这个方程会产生一个数值序列,虽然看起来随机,但实际上具有可预测的范围和分布特性。
设置种子的目的在于初始化这个随机数生成器。由于计算机是确定性系统,需要引入时间等变量作为种子,使得每次程序运行时都能获得不同的随机数序列。如果没有设置种子或使用固定种子,每次运行程序都会得到相同的"随机"序列。
理解随机数的底层原理很重要,因为伪随机数的随机性、范围和分布特性都受限于其生成算法,这与真正的随机性存在本质区别。

随机数实际上是根据上一个数字的通过复杂计算算出来的数值,但是他也有弊端

如果我们保持相同的种子,生成的随机数序列也会相同。因此,我们需要不断改变种子值,比如使用当前时间作为变量种子。
