C语言精讲-07
1函数
在 C 语言里,函数堪称核心的构建单元。借助函数,我们能够将庞大复杂的程序拆解成一个个小巧的组件,极大地降低了程序的整体复杂度,让程序结构更加清晰,逻辑更易理解。
同时,函数的运用能够有效避免代码的重复编写。当遇到多处需要实现相同功能的情况时,只需定义一个函数,在不同的地方调用即可。这不仅减少了代码量,还显著提升了程序的可维护性。一旦需要对某个功能进行修改,只需调整对应的函数,而不必在大量重复代码中逐一修改。
更为重要的是,函数具有高度的可复用性。一个精心编写的函数可以在多个不同的程序中被轻松调用,就像 C 语言丰富的函数库一样,其中的函数被广泛应用于各种程序开发中,大大提高了开发效率和代码质量。
1.1函数的定义和使用
1.定义
返回值类型 函数名(参数)
{
代码块
}
返回值类型遵循以下规则:
函数不能返回数组,除此之外,函数可以返回任意类型的值。
如果函数的返回值类型为 void,则函数没有返回值。
如果省略返回值类型,C89 会假定返回值类型为 int;但在 C99 中这是不合法的。
2.函数的调用
#include<stdio.h>
//无参无返回值 void类型 空
void fun1(void)
{
printf("hello\n");
}
//返回两个数最大值
int fun2(int a,int b)
{
return (a>b?a:b);
}
int main(void)
{
int max=0;
fun1();
max=fun2(10,100);
printf("max=%d\n",max);
return 0;
}
1.2全局变量、局部变量、静态变量
static修饰局部变量和全局变量
1.3 递归函数
在 C 语言里,递归函数是一种特殊的函数,它会在函数体内部调用自身。递归函数通常由两个部分构成:基本情况(终止条件)和递归情况。
#include <stdio.h>
// 递归函数计算阶乘
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int num = 5;
int result = factorial(num);
printf("%d 的阶乘是 %d\n", num, result);
return 0;
}
1.4练习题
#include <stdio.h>
// 1. 计算两个整数的和
int add(int a, int b) {
return a + b;
}
// 2. 判断一个数是否为偶数
int isEven(int num) {
return num % 2 == 0;
}
// 3. 计算一个整数的绝对值
int fun(int num) {
return num < 0 ? -num : num;
}
int main() {
// 测试 add 函数
printf("add(3, 5) = %d\n", add(3, 5));
// 测试 isEven 函数
printf("isEven(4) = %d\n", isEven(4));
printf("isEven(3) = %d\n", isEven(3));
// 测试 fun函数
printf("fun(-5) = %d\n", fun(-5));
return 0;
}