-
问题
自上而下的设计可能产生高层次的抽象,但代码复用性不高。在创建高层次的抽象时,不仅需要更大的工作量,而且最初的函数到底能够在多大程度上满足高层次的需求呢?
以数据交换程序为例:
image.png -
建立抽象
从概念的视角来看,建立抽象关注的不是如何实现,而是函数要做什么,将实现细节隐藏起来,进而帮助我们构建更易于修改的软件。理解系统的完整结构就变得更容易了。 -
建立接口
接口是由公开访问的方法和数据组成的,接口描述了与模块交互的唯一途径。最小化的接口只包含对于接口的任务非常重要的参数,最小化的接口便于学习如何与之交互,且只需要理解少量的参数,同事易于扩展维护。
image.png
当p1和p2分别指向变量a和b时,则p1和p2存储的值就是&a和&b。
-
void *指针
有时我们并不关心指针所指向的变量的类型,此时可以使用并不指定具体数据类型的泛型指针void *。通常只允许相同类型的指针之间进行转换,但泛型指针能够转换为任何类型的指针。memcpy()函数它将一段数据从内存里一个地方复制到另一个地方。可以复制任何类型的数据,因此将它的指针参数设定为void指针非常合理。
image.png -
使用接口
只需传入待交换的变量的地址, 即可确定如何通过接口调用它们。
image.png
网友评论