嵌入式c语言高级编程技巧 之 结构体的对象思维。
来源:互联网 发布:怎么安装mac os x 编辑:程序博客网 时间:2024/06/05 09:08
基于对象思想的结构体运用
对于c语言来说好像没有对象这个概念,但是结构体的出现可以完全模拟对象情况
举个简单的例子,就好像c++教程里关于求矩形的面积的问题,先定义一个对象类。
class 矩形 { ... public: ... void set_lenght(){}; void set_width{}; void get_area(){};};
但是对于c语言可以用结构体完成相同的抽象操作
typedef struct rectangular rectangular_model;typedef struct _ops_rect rect_ops_rect;struct rectangular{ char lenght; char width; rect_ops_rect* P_ops;};struct _ops_rect { void (*set_lenght)(rectangular_model *rect, char lenght); void (*set_width)(rectangular_model *rect, char lenght); int (*get_area)(rectangular_model *rect);};
接下来我们实际操作后运行的结果如下:
完整代码如下:
#include <stdlib.h>#include <stdio.h>#include "1_struct.h"void op_set_lenght(rectangular_model *rect, char lenght){ rect->lenght =lenght; return;}void op_set_width(rectangular_model *rect, char width){ rect->width =width; return;}int op_get_area(rectangular_model *rect){ int area; area= (rect->lenght )* (rect->width); return area;}static rect_ops_rect _ops={ op_set_lenght, op_set_width, op_get_area};void main(void){ int area_size; rectangular_model new_rect_object; //new object new_rect_object.lenght = 0; //init object new_rect_object.width = 0; new_rect_object.P_ops =&_ops; new_rect_object.P_ops->set_lenght(&new_rect_object,10); //ops object new_rect_object.P_ops->set_width(&new_rect_object,10); area_size=new_rect_object.P_ops->get_area(&new_rect_object); printf("矩形面积= %d",area_size); //get area}
@头文件 1_struct.h 如上
本次教程就是这么简单,最重要的还是编程的思想。
阅读全文
0 0
- 嵌入式c语言高级编程技巧 之 结构体的对象思维。
- 嵌入式C语言高级编程技巧 之 温故知新的指针
- 嵌入式linux之高级c语言专题—数组&字符串&结构体&共用体&枚举
- 嵌入式系统高级C语言编程
- 嵌入式系统高级C语言编程
- C语言位运算的高级应用(尤其适合单片机和嵌入式编程)
- 对嵌入式开发C语言结构体的一点总结
- C语言嵌入式编程之:内存操作
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- 嵌入式C语言之---模块化编程
- C语言中的结构体与面向对象编程思想
- 朴素贝叶斯的python代码实现
- 王学岗代理模式
- Android 简单断点续传|下载到本地
- HDOJ 1393 Weird Clock
- final
- 嵌入式c语言高级编程技巧 之 结构体的对象思维。
- 设计模式——观察者模式
- CSS盒子模型+浮动qing'chu+字体+背景
- Java 多线程核心技术梳理(附源码)
- 数据预处理总结
- 树和森林——树的同构
- Infogan-信息最大化生成对抗网络(理论部分)
- c++类和动态内存分配
- python练习题1 计算多个DNA序列中,GC比最高的序列