函数(Function)是 C 语言中的重要组成部分,它允许你将代码逻辑拆分成模块,提高代码的复用性和可读性。C 语言支持库函数(标准函数)和用户自定义函数。
📌 目录
1. C 语言函数概述
什么是函数?
- 函数 是一段可以被重复调用的代码块。
- 主要作用:
- 模块化:将复杂代码拆分,提高可读性和维护性。
- 代码复用:避免重复编写相同代码。
- 降低耦合性:不同模块相互独立。
C 语言函数分类
- 库函数(标准库函数):如
printf()
、scanf()
、strlen()
。 - 用户自定义函数:由程序员编写的函数,如
int sum(int a, int b)
。
2. 函数的声明和定义
在 C 语言中,函数通常由 声明(声明函数的存在) 和 定义(具体实现函数的功能) 组成。
2.1 函数的基本结构
返回类型 函数名(参数列表) {
// 函数体
return 返回值;
}
2.2 函数声明
- 作用:告诉编译器该函数的名称、返回类型和参数类型。
- 语法:
返回类型 函数名(参数类型 参数名, ...);
示例:
int sum(int, int); // 函数声明
2.3 函数定义
- 作用:提供函数的具体实现。
示例:
int sum(int a, int b) {
return a + b;
}
3. 函数的调用
语法:
函数名(参数);
示例
#include <stdio.h>
// 函数声明
int sum(int, int);
int main() {
int result = sum(5, 10); // 函数调用
printf("5 + 10 = %d\n", result);
return 0;
}
// 函数定义
int sum(int a, int b) {
return a + b;
}
输出:
5 + 10 = 15
4. 函数参数(传值与传引用)
4.1 传值调用(Call by Value)
- 传递变量的副本,函数内部修改不会影响原变量。
#include <stdio.h>
void modifyValue(int x) {
x = 10; // 修改的是副本
}
int main() {
int a = 5;
modifyValue(a);
printf("a = %d\n", a); // a 仍然是 5
return 0;
}
4.2 传引用调用(Call by Reference)
- 通过指针传递变量地址,函数内部修改会影响原变量。
#include <stdio.h>
void modifyValue(int *x) {
*x = 10; // 直接修改原变量
}
int main() {
int a = 5;
modifyValue(&a);
printf("a = %d\n", a); // a 被修改为 10
return 0;
}
5. 递归函数
递归函数是指在自身函数内部调用自身。
示例:计算阶乘(n! = n × (n-1) × … × 1)
#include <stdio.h>
int factorial(int n) {
if (n == 1) return 1;
return n * factorial(n - 1);
}
int main() {
int num = 5;
printf("%d 的阶乘是 %d\n", num, factorial(num));
return 0;
}
输出:
5 的阶乘是 120
6. 库函数(标准函数)
C 语言提供了丰富的标准库函数,常见类别如下:
类别 | 示例 | 头文件 |
---|---|---|
输入输出 | printf() , scanf() | <stdio.h> |
字符串 | strlen() , strcpy() | <string.h> |
数学 | pow() , sqrt() | <math.h> |
时间 | time() , clock() | <time.h> |
示例:
#include <math.h>
#include <stdio.h>
int main() {
double result = sqrt(16.0);
printf("16 的平方根是 %.2f\n", result);
return 0;
}
7. 代码示例
示例:求最大值
#include <stdio.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int main() {
int x = 10, y = 20;
printf("最大值是 %d\n", max(x, y));
return 0;
}
示例:交换两个数
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
swap(&x, &y);
printf("交换后: x=%d, y=%d\n", x, y);
return 0;
}
8. 参考资料
📌 总结
- 函数可以减少代码冗余,提高可读性和可维护性。
- C 语言的函数包含声明、定义和调用。
- 参数传递分为传值(副本,不影响原变量)和传引用(指针,影响原变量)。
- 递归函数适用于需要自调用的情况,如阶乘计算、斐波那契数列。
- C 提供了丰富的标准库函数,如
printf()
、strlen()
、sqrt()
。
掌握 C 语言函数,可以让你的代码更加结构化和高效!💡 🚀
发表回复