目录
1)值传递时,实参将值传递给形参,形参时实参的副本,对形参做的操作不会影响实参。
定义全局变量,这样全局变量不管时函数内部调用还是其他在本文件内部的调用,均可以直接使用,不需要传递参数 。
2)形式2 int fun(int a[], int len);
1.头文件中存放宏定义 2.头文件中存放声明的全局变量和全局函数 3.头文件中存放自定义的数据类型
一、函数传递
1.1.值传递
1.定义:当函数内部想要使用外部变量的值是就要使用值传递。
2.注意点
1)值传递时,实参将值传递给形参,形参时实参的副本,对形参做的操作不会影响实参。
2)值传递,不能实现修改外部变量的功能。
1.2.全局变量传递
定义全局变量,这样全局变量不管时函数内部调用还是其他在本文件内部的调用,均可以直接使用,不需要传递参数 。
1.3.整型数组传递
1.形式
1)形式1 int fun(int a[5]);
2)形式2 int fun(int a[], int len);
2.注意点
1)形式1只能操作5个元素的数组,形式2可以操作不同类型长度的数组 ;
2)函数体内部的数组会随函数结束被回收,如果后续还想操作该数组必须在外部定义传到函数中;
3)数组传递中,形参操作和实参操作的是同一个数组;
1.4.字符型数组和字符串传递
1.形式
int fun(char ch[]);
二、递归函数
2.1.什么是递归函数
函数定义时调用函数本身
2.2.注意点
1.递归一定要有结束条件
2.避免深层次递归
三、预处理命令
3.1.宏定义
1.不带参
#define PI 3.1415
2.带参宏(宏函数)
#define ADD(x,y) x+y
与函数的区别:
1)函数有参数类型、返回值、传参的概念
2)带参宏没有参数类型、返回值、传参的概念
3)带参宏是在程序编译阶段加载到程序中
带参宏可能改变运算符的优先级,记得加括号
4)函数是在程序运行阶段加载到程序中
5)带参宏会使代码体积增大
6)函数不会使代码体积增大
7)带参宏执行效率高
8)函数执行效率低
3.2.头文件包含
1.形式
#include <stdio.h>
在预处理阶段将stdio.h头文件展开到文件中
在/usr/include目录下查找stdio.h
#include "stdio.h"
在当前目录下查找stdio.h;
如果当前目录找不到则在系统目录/usr/include目录下查找头文件
2.头文件以.h结尾
1.头文件中存放宏定义
2.头文件中存放声明的全局变量和全局函数
3.头文件中存放自定义的数据类型
四、总结
2024年7月20日 ,嵌入式学习第9天。收获满满,对于函数传参问题,搞清楚了变量与数组传参的区别,以及宏定义和头文件是怎么回事。
加油!