嵌入式之C思想-函数

c所访问的对象比较单一就是内存,所以函数也可以看成是一段连续的内存。

但与数组(也是连续的空间)相比,具备三要素:

函数名-标签,输入参数,返回值。

函数参数中...为省略参数,可选参数由于数目不定(0个或以上),声明时用"…"表示(“…”用作参数占位符)。

输入参数,返回值,可以认为是承上启下的作用。

形参与实参就是拷贝,内存大小的一致性。形参是函数调用前,先要初始化的数据。

传址:指针才是标识一个变量的唯一表示形式。

连续空间的传递(数组、结构体)都是址传递。

连续空间就两种,字符空间和非字符空间,最大不同就是结束标志的不同。

非字符空间,更多的指非char 或非const char型,结束标志就是数量。void *作为非字符空间的标识

字符空间结束标志就是0。char*作为字符空间的标识。

返回值本身就是启下的意思。另一种就是通过传递输入参数的地址。

返回值其实也是一个拷贝的过程。返回的类型只能是指针或是基本数据类型,不能是数组。

返回连续空间,只能通过指针的方式。并且必须保证空间地址的合法性(如不是局部变量)。

将一个绝对地址转换成一个函数指针如:0x45012

首先将绝对地址,转换成一个指针

( int (*)(int))0x45012;//第一个int 是返回值,第二个是参数

后面加()就是调用这个地址的函数,实际就是PC值,指向这里

(( int (*)(int))0x45012)();

至此,所有嵌入式C基础的知识总结完了:

如果能将看到的任何语言的代码,都能在脑海中清晰脑补出在计算机内存中的分布图或某种数据结构,那么算是将这门语言,学到家了。算法其实就是建立在数据结构之上的操作步骤。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值