核心结论 c 语言里面函数分为两大类,一类是程序员自己编写的自定义函数,另一类是 C 标准库已经提前写好的库函数,库函数放在各个头文件里面,写代码只要 include 对应头文件就可以直接调用。C 语言程序本身就是由多个函数组合而成,main 函数是程序入口,属于特殊的自定义函数。库函数按照头文件划分,最常用的就是输入输出函数 stdio.h 字符串处理 string.h 数学运算 math.h 动态内存 stdlib.h 时间函数 time.h,考试和作业里面出现频率最高的就是 printf scanf strlen sqrt malloc 这类。自定义函数没有固定清单,是根据业务需求自己定义,比如求素数函数 排序函数 队列操作函数,作用是拆分代码,实现模块化,避免重复代码。函数还可以按照有没有返回值、有没有参数继续细分,分为无参无返回值 无参有返回值 有参无返回值 有参有返回值四种基础形式。
常用标准库函数清单
stdio.h 输入输出函数
清单
printf 格式化输出
scanf 格式化输入
getchar 读取单个字符
putchar 输出单个字符
gets 读取一行字符串
puts 输出字符串并自动换行
fopen fclose fread fwrite 文件读写函数
string.h 字符串处理函数
清单
strlen 计算字符串有效长度
strcpy 字符串拷贝
strcat 字符串拼接
strcmp 字符串比较
strstr 查找子串
memcpy 内存拷贝
memset 内存填充
math.h 数学函数
清单
sqrt 开平方
pow 求幂
fabs 浮点数绝对值
sin cos tan 三角函数
floor ceil 向下向上取整
stdlib.h 通用工具函数
清单
malloc 申请动态内存
free 释放动态内存
rand 生成随机数
srand 设置随机种子
atoi 字符串转整数
exit 终止程序
time.h 时间函数
清单
time 获取当前时间
localtime 转换本地时间
difftime 计算时间差
函数四种基础类型表格
| 类型 | 特点 | 例子 |
|---|---|---|
| 有参有返回值 | 接收参数,return 带回结果 | int add(int a,int b) |
| 有参无返回值 | 接收参数,执行操作无返回 | void print(int n) |
| 无参有返回值 | 不传参数,return 带回结果 | int getNum() |
| 无参无返回值 | 不传参数,只执行动作 | void menu() |
深度补充知识点
C 语言库函数不是 C 语言语法本身,是标准规范提供的工具集,不同编译器还会额外扩展一些非标准库函数,跨平台代码尽量只用 ANSI 标准库函数。
自定义函数必须先声明或者定义,之后才能调用,否则会出现隐式声明警告,函数声明也叫函数原型,写在源文件顶部,函数实现写在后面。
main 函数比较特殊,操作系统调用 main,main 的 return 值作为进程退出码,普通自定义函数 return 值返回到调用点。
递归函数属于自定义函数的特殊形式,函数内部自己调用自己,比如阶乘 斐波那契,需要设置递归出口,否则会栈溢出。
编码注意事项
第一 调用库函数一定要记得引入对应头文件,比如 sqrt 忘记 include math.h,会报隐式声明错误,gcc 编译 math 库还需要加 lm 参数
第二 自定义函数命名属于标识符,不能和关键字、库函数名重名,比如不要把自己函数命名成 printf
第三 函数参数传递默认是值传递,如果要修改实参,需要传递指针
第四 函数可以嵌套调用,但是 C 语言不支持函数内部再定义函数,这点和部分其他语言不一样
【相关 FAQ】
问题 1 c 语言函数有哪些,main 函数属于库函数吗
回答 1 c 语言函数有哪些,main 函数不属于标准库函数,它是程序入口函数,由程序员编写,操作系统启动程序的时候调用 main 函数。
问题 2 c 语言函数有哪些,库函数需要自己写吗
回答 2 c 语言函数有哪些,库函数是 C 标准库提前实现好的,不需要自己编写,只需要 include 对应的头文件,就可以直接调用库函数。
问题 3 c 语言函数有哪些,C 语言能不能在函数里面再定义函数
回答 3 c 语言函数有哪些,标准 C 不支持函数内部嵌套定义函数,但是支持函数嵌套调用,也就是一个函数里面调用另外一个已经定义好的函数。
问题 4 c 语言函数有哪些,自定义函数和库函数最大区别是什么
回答 4 c 语言函数有哪些,库函数是标准库自带通用工具,自定义函数是程序员根据业务需求自己编写,用来实现特定业务逻辑,实现代码拆分模块化。
免责申明:本文仅作为 c 语言函数有哪些相关知识学习参考,不同 C 标准版本库函数会有增补,部分扩展函数不属于 ANSI 标准,跨平台开发请核对标准规范,因头文件缺失错误调用函数造成编译异常,由使用者自行承担。


