c语言中 如何在结构体中实现类 相关知识说明

 

c++相比与c在类的定义上是一个巨大的进步,他的对象的概念让编程的理解大大简化

 

c语言中有一个与类十分相近的数据类型概念,叫做结构体。

 

c语言是一门面向过程的语言,但是实际的工程当中,大量的使用了结构体,即数据对象化,而实现就采用过程化

 

有很多时候,我们也非常期望能够在C中实现类,即把函数也封装进去,使程序更加容易理解

 

(有的人会问,反正c++支持C,何不就在C++中进行编程,还搞这么多事,事实上,在绝大多数的单片机和嵌入式编程中,是只能用C程序的。我们知道uC/OS,ulinux等等基于C的嵌入式操作系统,我们听说过基于c++并且广泛应用的嵌入式系统吗?)

 

这里我们就要先简单说一说函数,对于function(elem1, elem2, elem3),他其实和数组一样,a[10]的a代表了这个数组的起始地址,而function就是这个函数的起始地址

 

在struct中,不能放函数,那么我们转变一下,是否可以放函数的指针呢,答案是肯定的,这也是我们实现结构体中封装函数的原理

 

所以

struct class

{

int x;

int y;

int z;

int (*function)();

}c_class

这里要特别注意,如果不加括号,表示一个返回指针的函数,他还是一个函数,因此肯定是不对的

而加了括号,这表示是一个函数的指针,因此,加不加括号有非常大的区别

而且这只是一个函数的指针,因此可以完全不需要指明函数需要的参数

 

一个定义好的函数

int fun(int num1 , int num2 , int num3)

{

......

}

现在进行初始化

c_class new_class;

new_class.x = 5;

new_class.y = 20;

new_class.z = 2;

new_class.function = fun;

 

至此C语言下的类的定义和初始化全部完毕

现在只需要调用

int fun_return = new_class.function(new_class.x , new_class.y , new_class.z);

最后再次说明,在我们实际的学习过程中,这种方法基本没什么用

我们的编程一般是VC或VS,都是支持C和c++的,不需要太在意

而当真正的在工作中,必须严格的使用纯C语言的时候,而您又觉得使用类可能会简化问题时,这种方法将会极大的帮助您

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值