实现ADT接口的思想
创建ADT对象的接口
有2种方法和一种不好的方法
主调函数传递二级指针
假设我们有
1 | typedef struct{ |
想要在main()函数中创建一个ADT_TYPE类型的对象,那么可以这样实现接口:
1 | void create_ADT_TYPE(ADT_TYPE** objp){ |
main()调用create_ADT_TYPE()时传递obj的指针,也就是一个二级指针,以达到在create_ADT_TYPE()直接修改obj指向的目的.
接口函数返回对象指针
同样假设有:
1 | typedef struct{ |
想要在main()函数中创建一个ADT_TYPE类型的对象,那么可以这样实现接口:
1 | ADT_TYPE* create_ADT_TYPE(void){ |
全局静态指针
这样的写法很不好,这意味着一个程序只能创建一个ADT_TYPE的对象.
在ADT_TYPE.h中如下:
1 | typedef struct{ |
在ADT_TYPE.c中有如下实现:
1 | static ADT_TYPE* glob_obj; |
在main.c中如下使用该ADT:
1 |
|
这样写,用户代码(main()函数)仅仅只能依靠接口函数进行沟通,而且如果没有特殊的处理,最多只能创建一个对象,即glob_obj指向的对象.
需要返回复合结果的操作接口
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WAHAHA's blog!
评论