1. 函数基础概念解析
函数是C语言中最基本的代码组织单元,也是结构化编程的核心。简单来说,函数就是一段具有特定功能的代码块,通过给这段代码命名,我们可以在程序中反复调用它。这就像工厂里的生产线,每个工人(函数)负责一个特定工序,当需要完成某个产品时,只需要按顺序调用这些工人即可。
在C语言中,函数主要解决三个问题:
- 代码复用:避免重复编写相同逻辑
- 模块化开发:将复杂问题分解为多个小问题
- 逻辑封装:隐藏实现细节,只暴露必要接口
一个典型的函数定义包含以下部分:
c复制返回类型 函数名(参数列表) {
// 函数体
return 返回值;
}
初学者最容易混淆的是函数声明和函数定义的区别。函数声明只是告诉编译器"这个函数存在",而函数定义则是具体实现。就像菜单上写着一道菜名(声明)和实际烹饪这道菜(定义)的区别。
注意:C语言中函数不能嵌套定义,即不能在函数内部定义另一个函数。这是与某些现代语言的重要区别。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 函数定义与调用详解
2.1 函数定义规范
让我们通过一个实际例子来理解函数定义。假设我们要实现一个计算两数之和的函数:
c复制// 函数定义
int add(int a, int b) {
int sum = a + b;
return sum;
}
这里有几个关键点需要注意:
int是返回类型,表示这个函数会返回一个整数add是函数名,遵循C语言的标识符命名规则(int a, int b)是参数列表,定义了两个整型参数return sum;将计算结果返回给调用者
参数传递在C语言中是"值传递",即函数内部得到的是参数的副本。这意味着在函数内修改参数值不会影响外部的原始变量。例如:
c复制void change(int x) {
x = 100; // 只修改副本
}
int main() {
int num = 10;
change(num);
printf("%d", num); // 输出仍然是10
}
2.2 函数调用机制
函数调用时,程序会经历以下步骤:
- 将参数压入栈中(参数从右向左压栈)
- 保存当前函数的返回地址
