一、什么是C语言函数?
函数本质上就是一段“封装好的、可重复使用的代码块”,它接收输入(参数),执行特定操作,最后返回一个结果(返回值)。
举个生活中的例子:你想煮一碗面,“煮面”就是一个函数——输入是“面条、水、调料”(参数),执行“烧水、下面、放调料”的操作,输出是“一碗煮熟的面”(返回值)。以后不管你想煮多少次面,不用再重复步骤,直接调用“煮面”这个函数就行。
在C语言中,函数的作用就是“简化代码、提高复用性、降低维护成本”。比如你写一个计算两数之和的代码,以后每次需要计算和,不用再写一遍加法语句,直接调用求和函数即可。
二、函数的基本结构
C语言中,函数的定义格式固定,分为3个核心部分:返回值类型、函数名、参数列表,再加上函数体。
// 函数定义格式
返回值类型 函数名(参数列表) {
// 函数体:要执行的代码
return 返回值; // 与返回值类型对应,无返回值则省略(或写return;)
}
逐个拆解说明,新手必看:
三、函数的分类(按用途划分)
C语言中的函数主要分为3类,新手重点掌握前两类即可:
1. 库函数
C语言标准库已经封装好的函数,不需要我们自己定义,只要包含对应的头文件,就可以直接调用。这是新手最常用的函数,节省大量开发时间
常见库函数示例(附使用场景):
- 输入输出函数:printf(打印)、scanf(输入),头文件<stdio.h>
- 字符串函数:strlen(求字符串长度)、strcpy(字符串复制),头文件<string.h>
- 数学函数:sqrt(求平方根)、pow(求幂),头文件<math.h>
注意:使用库函数必须包含对应的头文件,否则会报错。比如用printf,必须在代码开头写#include <stdio.h>
2. 自定义函数
库函数不能满足所有需求,这时我们就需要自己定义函数,比如实现一个“判断素数”“计算阶乘”的函数。这也是面试中常考的重点,新手一定要多练。
自定义函数实战示例(3个高频案例,直接复制可运行):
3.主函数
每个C语言程序都必须有且只有一个main函数,它是程序的入口,程序从main函数开始执行,其他函数必须被main函数(或其他被main调用的函数)调用才能执行。
注意:main函数的返回值类型通常是int,返回0表示程序正常结束,返回非0表示程序异常结束(一般不用纠结,写return 0;即可)。
三.函数的调用流程
很多新手会混淆函数的定义和调用,这里用一个通俗的例子讲清楚流程,结合案例2的add函数:
|
核心要点:函数调用时,是“暂停当前函数,执行被调用函数,执行完再回到当前函数继续执行”,就像你看书时,看到一个不懂的词,去查字典(调用字典函数),查完再回到书里继续看。 |
四、函数的常见坑点
整理了4个新手最容易踩的坑,每个坑都附错误示例和正确示例,帮你避开弯路:
坑点1:函数未定义就调用
错误示例:
#include <stdio.h>
int main() {
add(10, 20); // 错误:add函数还没定义,编译器不认识
return 0;
}
int add(int a, int b) {
return a + b;
}
正确做法:要么将函数定义放在main函数之前,要么在main函数之前写“函数声明”(告诉编译器函数的存在)
函数声明格式:返回值类型 函数名(参数列表);(不用写函数体)
#include <stdio.h>
// 函数声明
int add(int a, int b);
int main() {
add(10, 20); // 正确:编译器已知add函数的存在
return 0;
}
// 函数定义
int add(int a, int b) {
return a + b;
}
坑点2:返回值类型与return语句不匹配
错误示例:函数返回值类型是int,但return返回了字符串
#include <stdio.h>
int add(int a, int b) {
return "123"; // 错误:返回值是字符串,与int类型不匹配
}
int main() {
printf("%d", add(10, 20));
return 0;
}
正确做法:return返回的值,类型必须和函数定义的“返回值类型”一致
坑点3:参数个数/类型不匹配
错误示例:函数定义需要2个int参数,但调用时只传了1个,或传了一个float参数
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
add(10); // 错误:参数个数不够
add(10.5, 20); // 错误:第一个参数是float,与int不匹配
return 0;
}
正确做法:调用函数时,参数的个数、类型必须和函数定义的参数列表完全一致
坑点4:void函数写了返回值
错误示例:
#include <stdio.h>
void welcome() {
return "欢迎"; // 错误:void函数不能返回任何值
}
int main() {
welcome();
return 0;
}
正确做法:void函数要么不写return,要么只写return;(无返回值)



