函数
一堆代码的集合,用一个标签去描述它,实现复用化
函数具备3要素
1、函数名
2、输入参数
3、返回值
指针表示函数
int (*p)(int char)
例如函数名地址为0x12345
将他赋值给指针
int p;
p=(int()(。。形参))0x12345需要对数字进行强制类型转换,否则只是一串数字无法识别
int (*p【7】)(int int)函数指针数组
实参传送给形参,传递的形式:拷贝
值传递
实参拷贝一份副本给形参,不改变原值
上层调用者,保护自己空间不被修改
地址传递
上层,调用者让 下层子函数修改自己空间值的方式
作用:
1、修改 (典型形参形式int * char*)
2、空间传递
子函数看空间里的情况 const修饰的,只是查看功能
子函数反向修改上层空间里的内容(修改空间两个要素1.空间首地址2空间结束标志) char * 、
viod
{
修改的空间分类
1、字符空间
与非字符空间区别:结束标志不同。
结束标志:内存里存放了0x00(1B),字符空间
非字符空间0x00,不能当成结束标志
strlen
}
对于空间的修改最好要写成viod*p
连续空间传递
1、数组
数组名——标签
实参:
int abc 【10】
fun(abc)
形参
void fun (int *p) void fun (int p【10】)(10是给人看的,实际相当于第一种写法)
2、结构体
结构体变量
实参
struct abc{int a;int b;};
struct abc buf;
形参:

本文详细介绍了C语言中的函数使用,包括函数的3要素、指针表示函数、值传递与地址传递的区别、连续空间传递以及函数返回值。特别强调了在嵌入式开发中,函数指针的应用和注意事项,如局部静态变量、防止段错误以及返回指针的合法性和生命周期管理。同时,还列举了嵌入式工程师面试中常见的宏定义和类型修饰符问题。
最低0.47元/天 解锁文章
876

被折叠的 条评论
为什么被折叠?



