原创 C语言--指针和函数

2023-10-18 10:57 1085 4 5 分类: MCU/ 嵌入式 文集: C语言

指针和函数

 

1、  用指针传递数据,函数可以修改数据

采用swap函数,指针传递数据,实现数据交换,传递指针,则数据能被修改

 

 

2、  传递指向常量的指针

值不能被修改,只传递了数据的地址,避免复制大量的地址

举例:实现功能,将一个字符串保存在一个数组中,并将字符串的长度保存在数组的前两个字节中

输出结果:00 08 4d 51 54 54 43 4f 41 50 00 00 00 00 00 00 00 00 00 00 字符对应的十六进制值

10行中,writeCString()函数,传递了const char *string ,传递字符串的地址,只传递了数据,而不修改数据的;传递了unsigned char* pptr,传递指针,用于修改地址中的值。

 

3、  传递指针的指针

如果想要修改原指针而不是修改指针的副本,就需要传递指针的指针

如果要在函数中修改变量的值,就要把变量的地址传给函数;如果变量是普通变量,就传普通变量的地址,如果变量是指针变量,就传指针变量的地址

writeCString()函数和writeInit()函数分别传递了unsigned char **pptr;是二级指针,是指向数组地址的指针。


4、  函数指针

通过定义函数指针方式,实现函数的调用;使用typedef定义函数指针类型,实现函数调用

1行:定义函数指针直接,直接复制调用

5行:typedef定义相同类型的函数指针,int (*)(int)类型,使用是看作一个数据类型即可,将这个数据类型取别名为funcptr

5、  传递函数的指针

传递函数指针,实现函数调用

13行:compute()函数,传递了函数指针, 定义了一个fptrOperation 类型的函数指针,用于灵活调用add() substract() 两个函数, 同时传递给函数所需的参数。

6、  返回函数指针

把返回类型声明为函数指针类型

实现和上边同样的运算,采用返回函数指针,调用方式不同,实现功能相同

14行:返回fptrOperation类型的函数指针

7、  使用函数指针数组

根据某写条件,选择要执行的函数,把函数值针声明为数组的类型即可

12行:定义了函数指针数组,并复制为NULL;

14行:函数初始化了函数指针数组

转换函数指针:需要谨慎使用,因为运行时系统不会验证函数指针参数的正确性

比较函数指针:可以用相等(==)和不等(!=)操作符来比较函数指针


作者: light, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4056283.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

开发工匠 2023-10-23 08:57

参考和学习,应用
相关推荐阅读
light 2023-10-09 13:46
C语言应用基础
1、程序和内存 程序:数据+算法 内存的本质就是存储代码和数据的 数据和代码的存储方式不同,可分为冯诺依曼结构和哈佛结构 冯诺依曼结构:程序和数据存储在同一个存储器,二者共...
light 2023-10-04 22:51
电路基础知识
《实例解读模拟电子技术》记录1、电源(power supply)是向电路提供电能的装置 电源的额定电压不可以随意选择 原电池(不能充电的电池)电压值为1.5的整数倍:1.5V 3V&nb...
light 2023-09-05 17:05
linux命令行
如果提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。 1、简单命令:     日期,时间:date  cal ...
light 2023-09-04 10:46
STM32通信
一、什么是同步/异步通信?   同步通信:一方发送,另一方应答,否则不进行下一次传输(带时钟同步信号传输)。   异步通信:一方发送,不考虑另一方是否收到,直接进行...
light 2023-09-01 15:35
STM32存储
存储器 1G=1024M     1M=1024K    1K(B)=1024Byte(字节)  &n...
我要评论
1
4
关闭 站长推荐上一条 /2 下一条