1.函数的基本概念
数是一种可重复使用的代码块,用于执行特定的任务或操作。函数允许我们将代码逻辑组织成独立的单元,从而提高了代码的可读性、可维护性和重用性。一个C程序可以由一个或多个源文件构成(C文件扩展名是“.c”),一个源文件是一个编译单位。一个源文件可以由若干个函数构成,函数之间可以相互调用。也就是说,函数是C程序基本的组成单位。
1.1函数的作用
封装功能,将一个完整的功能封装成函数,提高代码的结构化和复用性。
代码模块化,将程序按照功能拆分成若干模块单元,有助于降低复杂度。
增强可维护性,如果需要修改某项功能,只需要调整对应的函数代码。
隔离细节,通过函数调用可以隐藏实现细节,只关心输入输出。
1.2函数的分类
(1)库函数,也称为标准函数,是由C系统提供的,用户不必自己定义,可直接使用它们,使用库函数,必须包含 #include 对应的头文件。
(2)自定义函数,解决具体需求而自己定义的函数,需先定义再使用。
1.3函数的基本语法
返回类型 函数名(参数列表)
{
函数体语句1;
函数体语句2;
… 函数体语句n;
return 返回值;
1.3.1函数语法的组成部分

函数名:函数被调用时使用的名字,函数名要符合标识符规范。
函数体:函数中所包含的代码块,用于实现函数的具体功能和操作。
参数:用于接收调用函数时传递进来的值。
返回值:函数执行完毕后,从函数传回到调用点的值,返回值的类型要与函数名前面的返回类型对应,如果没有返回值,返回类型可以写 void。
1.3.2示例
#include <stdio.h>
// 声明函数
void func()
{
printf("hello func\n");
}
// 实现两个数字相减
int minus(int m, int n)
{
return m - n;
}
// 取两个数字中的最大值
int max(int a, int b)
{
int c;
c = a > b ? a : b;
return c;
}
int main()
{
return 0;
}
1.3.3函数不能嵌套声明
C程序中的所有函数都是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套声明。
//错误演示
int func1(int a,int b) //第1个函数的定义
{
...
int func2(int c,int d) //第2个函数的定义
{
...
}
...
}
1.4调用函数
函数名后面加上圆括号即是函数的调用,参数写在小括号中,函数每调用一次,函数体语句都会执行一遍。
#include <stdio.h>
// 声明函数
void func()
{
printf("hello func\n");
}
// 实现两个数字相减
int minus(int m, int n)
{
return m - n;
}
// 取两个数字中的最大值
int max(int a, int b)
{
int c;
c = a > b ? a : b;
return c;
}
// 主函数
int main()
{
// 函数的调用
func();
func();
printf("17-90的结果:%d\n", minus(17, 90));
printf("21-180的结果:%d\n", minus(21, 180));
printf("12和16之间较大的是:%d\n", max(12, 16));
printf("45和31之间较大的是:%d\n", max(45, 31));
return 0;
}
/*
输出结果:
hello func
hello func
17-90的结果:-73
21-180的结果:-159
12和16之间较大的是:16*/
1.5函数的返回值
函数调用后数能得到一个确定的值,这就是函数的返回值,返回值常常是一个计算的结果,或是用来作为判断函数执行状态的标记。
函数返回值分为以下三种情况:
(1)无返回值类型:针对函数无返回值或明确不需返回值的情况,使用void(即空类型)表示。
(2)有返回值类型:指明具体的类型,比如,int、float、char等。
(3)需要在函数体内与return语句搭配使用。如果返回值类型不是void,但函数中没有return语句,则函数会返回一个不确定的值。
1.6函数的参数
函数的参数分为形参与实参:
- 形参:在定义函数时,函数名后面括号()中声明的变量称为形式参数,简称形参。
- 实参: 在调用函数时,函数名后面括号()中的使用的常量、变量、表达式称为实际参数,简称实参。
注意:实参的数量要与形参的数量一致,否则报错。
#include <stdio.h>
// x 和 y 即为形参
int func(int x, int y)
{
return x + y;
}
int main()
{
// 3 和 5 即为实参
int sum = func(3, 5);
printf("%d \n", sum); // 8;
// 如果实参数量如形参不一致 会报错
// func(100, 299, 300);
// func(100);
return 0;
}
504



被折叠的 条评论
为什么被折叠?



