c所访问的对象比较单一就是内存,所以函数也可以看成是一段连续的内存。
但与数组(也是连续的空间)相比,具备三要素:
函数名-标签,输入参数,返回值。
函数参数中...为省略参数,可选参数由于数目不定(0个或以上),声明时用"…"表示(“…”用作参数占位符)。
输入参数,返回值,可以认为是承上启下的作用。
形参与实参就是拷贝,内存大小的一致性。形参是函数调用前,先要初始化的数据。
传址:指针才是标识一个变量的唯一表示形式。
连续空间的传递(数组、结构体)都是址传递。
连续空间就两种,字符空间和非字符空间,最大不同就是结束标志的不同。
非字符空间,更多的指非char 或非const char型,结束标志就是数量。void *作为非字符空间的标识
字符空间结束标志就是0。char*作为字符空间的标识。
返回值本身就是启下的意思。另一种就是通过传递输入参数的地址。
返回值其实也是一个拷贝的过程。返回的类型只能是指针或是基本数据类型,不能是数组。
返回连续空间,只能通过指针的方式。并且必须保证空间地址的合法性(如不是局部变量)。
将一个绝对地址转换成一个函数指针如:0x45012
首先将绝对地址,转换成一个指针
( int (*)(int))0x45012;//第一个int 是返回值,第二个是参数
后面加()就是调用这个地址的函数,实际就是PC值,指向这里
(( int (*)(int))0x45012)();
至此,所有嵌入式C基础的知识总结完了:
如果能将看到的任何语言的代码,都能在脑海中清晰脑补出在计算机内存中的分布图或某种数据结构,那么算是将这门语言,学到家了。算法其实就是建立在数据结构之上的操作步骤。