函数尽量精简,可应对多个问题
函数的概念
其实在C语⾔也引⼊
函数(function)的概念,有些翻译为:
⼦程序,⼦程序这种翻译更加准确⼀些。C语⾔中的函数就是
⼀个完成某项特定的任务的⼀⼩段代码
子程序:是一个大型程序中的某部分代码,有一个或多个语句块组成,负责完成某项特定任务,相较于其他代码具备相对的独立性。
一般会有输入参数和返回值,提供对过程的封禁和细节的隐藏
C语⾔的程序其实是由
⽆数个⼩的函数组合⽽成的,也可以说:⼀个⼤的计算任务可以分解成若⼲个较⼩的函数(对应较⼩的任务)完成。同时⼀个函数如果能完成某项特定任务的话,这个函数也是可以复⽤的,提升了开发软件的效率。


c语言函数的分类
1.库函数
2.自定义函数
库函数
标准库和头⽂件
C语⾔标准中规定了C语⾔的各种语法规则,C语⾔并不提供库函数;C语⾔的国际标准ANSIC规定了⼀些常⽤的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语⾔标准就给出了⼀系列函数的实现。这些函数就被称为
库函数
求字符串长度——
strlen
比较两个字符串的大小——
strcmp
常见的库函数有:
IO函数
字符串操作函数
内存操作函数
时间/日期函数
数学函数
其他库函数
注:库函数的使用必须包含#include对应的头文件
MSDN(Microsoft Developer Network)
库函数的使⽤⽅法
库函数的学习和查看⼯具很多,⽐如:
C/C++官⽅的链接:
https://zh.cppreference.com/w/c/header cplusplus.com:
C library - C++ Reference
库函数⽂档的⼀般格式
了解这些可以方便阅读库函数文档
1. 函数原型
2. 函数功能介绍
3. 参数和返回类型说明
4. 代码举例
5. 代码输出
6. 相关知识链接
自定义函数
函数的语法形式
自定义函数和库函数一样,有函数名,返回值类型,函数参数
ret_type fun_name(形式参数)
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
括号中放的是形式参数
{}括起来的是函数体

- ret_type 是⽤来表⽰函数计算结果的类型,有时候返回类型可以是void ,表⽰什么都不返回
- fu n_name 是为了⽅便使⽤函数;就像⼈的名字⼀样,有了名字⽅便称呼,函数有了名字⽅便调⽤,所以函数名尽量要根据函数的功能起的有意义。
- 函数的参数就相当于,⼯⼚中送进去的原材料,函数的参数也可以是void ,明确表⽰函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。
- {}括起来的部分被称为函数体,函数体就是完成计算的过程。
//函数的定义
//如果无返回类型就写void get_max()
int get_max(int x, int y)//返回类型可以不写,但是看需要
//这里的返回类型是数字所以用int
{
return(x > y ? x : y);
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//求较大值
//函数的调用
int m = get_max(a, b);
printf("%d\n", m);
return 0;
}
函数的举例
写⼀个加法函数,完成2个整型变量的加法操作。
#include <stdio.h>
//函数部分
int Add(int x, int y)
{
return x+y;
}
int main()
{
int a = 0;
int b = 0;
//输⼊
scanf("%d %d", &a, &b);
//调⽤加法函数,完成a和b的相加
//求和的结果放在r中
int r = Add(a, b);
//输出
printf("%d\n", r);
return 0;
}
函数的参数:形参和实参
在函数使⽤的过程中,把函数的参数分为,实参和形参。
实际参数:(实参)
真实传给函数的参数,叫实参
。实参可以是,常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都被必须有确定的值,以便把这些值传送给形参。
案例讲解:
在上⾯代码中,第3~6⾏是Add 函数的定义,有了函数后,再第16⾏调⽤Add函数的。我们把第16⾏调⽤Add函数时,传
递给函数的参数a和b,称为实际参数,简称
实参。
实际参数就是真实传递给函数的参数
形式参数:(形参)
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。
形式参数当函数调用完成之后就自动销毁了。因此形参只在函数中有效。
案例讲解:
在上⾯代码中,第3⾏定义函数的时候,在
函数名Add 后的括号中写的x和y,称为
形式参数,简称
形参。