C语言 函数
学习函数 · 难度:入门 · +10XP
C语言 函数详解
函数是 C 语言程序的基本组成单元。每个 C 程序至少包含一个 main() 函数。函数将一段可重复使用的代码封装起来,接收输入参数,执行特定逻辑,最后返回结果。使用函数可以让代码更清晰、更易于维护和复用。
函数的定义与声明
C 语言的函数由返回类型、函数名、参数列表和函数体四部分组成。如果函数定义在调用之后,则需要提前进行函数声明(也叫函数原型),告诉编译器函数的存在。
#include <stdio.h>
// 函数声明(函数原型)
int add(int a, int b);
// 函数定义
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3);
printf("5 + 3 = %d
", result);
return 0;
}
参数传递方式
| 传递方式 | 特点 | 示例 |
|---|---|---|
| 值传递 | 将实参的值复制一份给形参,函数内修改不影响外部变量 | void swap(int a, int b) |
| 指针传递 | 传递变量的地址,函数内通过指针可以修改外部变量的值 | void swap(int *a, int *b) |
| 数组传递 | 数组名会退化为指针,实际上传递的是数组首元素的地址 | void printArr(int arr[], int n) |
返回值与 void 类型
函数可以返回各种数据类型(int、float、char、指针 等)。如果函数不需要返回值,使用 void 关键字声明返回类型。每个函数最多只能返回一个值,但可以通过指针参数来输出多个结果。
// 通过指针返回多个值
void getMinMax(int arr[], int n, int *min, int *max) {
*min = *max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < *min) *min = arr[i];
if (arr[i] > *max) *max = arr[i];
}
}
作用域与存储类别
C 语言中的变量有四种存储类别:auto(默认,局部变量)、static(静态变量,整个程序生命周期内保留值)、extern(外部变量,跨文件访问)和 register(建议存于寄存器中)。理解这些存储类别对于编写高效且无 Bug 的程序至关重要。
- 编写一个
max函数,接收两个整数,返回较大的那个 - 编写
swap函数,使用指针交换两个整数的值,并在 main 中验证 - 编写
factorial函数,用递归计算 n 的阶乘 - 创建一个 static 变量,观察它在多次函数调用中的变化
- 尝试将函数定义和声明分别放到
.c和.h文件中,学习多文件编译