- 前言
- 1. 函数的概念和分类
- 2.库函数
- 3. 自定义函数
- 3.1 自定义函数的简单介绍
- 3.2 自定义函数举例
- 4. 形参和实参
- 4.1 形参
- 4.2 实参
- 4.3 形参和实参的关系
- 4.3.1 理解
- 4.3.2 举例代码和调试
- 5. 嵌套函数和链式访问
- 5.1 嵌套函数
- 5.2 链式访问
- 6. 函数的声明和定义
- 6.1 单个文件
- 6.2 多个文件
- 6.3 static 和 extern
- 结语
↓
上期回顾: 【C语言回顾】数组
个人主页:C_GUIQU
专栏:【C语言学习】
↑
前言
各位小伙伴大家好!上期小编给大家讲解了C语言中的数组,接下来讲讲C语言中的函数!
1. 函数的概念和分类
【概念】本质上就是子程序。
【分类】
库函数:C语言内部提供的函数。
自定义函数:自己写出的函数。
2.库函数
【概念】库函数(Library function)是将函数封装入库,供用户使用的一种方式。
【常见库函数】
- IO函数
- 字符串操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
【简单示例】
#include <stdio.h>
#include <math.h>
int main()
{
double d = 16.0;
double r = sqrt(d);
printf("%lf\n", r);
return 0;
}
3. 自定义函数
3.1 自定义函数的简单介绍
自定义函数就是自己定义的函数,功能可以多种多样!
ret_type fun_name(形式参数)
{
}
• ret_type 是函数返回类型
• fun_name 是函数名
• 括号中放的是形式参数
• {}括起来的是函数体
可以把函数想象成⼩型的⼀个加⼯⼚,⼯⼚得输⼊原材料,经过⼯⼚加⼯才能⽣产出产品,那函数也是⼀样的,函数⼀般会输⼊⼀些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。
3.2 自定义函数举例
写⼀个加法函数,完成2个整型变量的加法操作
#include <stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x+y;
return z;
}
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;
}
4. 形参和实参
4.1 形参
【概念】写在自定义函数内部的参数。
【形参的实例化】形式参数只有在函数被调⽤的过程中为了存放实参传递过来的值,才向内存申请空间。
4.2 实参
【概念】真实传递给函数的参数。
4.3 形参和实参的关系
4.3.1 理解
- 形参和实参各⾃是独⽴的内存空间。
- 形参是实参的⼀份临时拷⻉。
4.3.2 举例代码和调试
#include <stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
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;
}
5. 嵌套函数和链式访问
5.1 嵌套函数
【说明】在函数中调用函数,就是嵌套函数。函数可以嵌套,但是函数不可以嵌套定义。
#include <stdio.h>
void test(int arr[],sz); //函数的声明
void print(int arr[],int sz);
int main()
{
int arr[10] = {0};
int sz = sizeof(arr)/sizeof(arr[0]);
test(arr,sz); //函数的调用——打印数组各元素
return 0
}
void test(int arr[],sz) //函数的调用
{
int i =0;
for(i=0;i<sz;i++)
{
arr[i]=i; //数组元素赋值
}
print(arr,sz);
}
void print(int arr[],int sz)
{
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]); //打印数组元素
}
}
5.2 链式访问
【说明】将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来。
【示例】
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));//链式访问
return 0;
}
6. 函数的声明和定义
6.1 单个文件
6.2 多个文件
6.3 static 和 extern
结语
以上就是小编对函数的讲解。
如果觉得小编讲的还可以,还请一键三连。互三必回!
持续更新中~!