在C语言中引入类的概念

射手随风摇摆

射手随风摇摆

2016-02-19 18:06

下面请跟着图老师小编一起来了解下在C语言中引入类的概念,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

  基于对象的程序设计的好处大家应该都有一定的体会,但是在 C 语言中并不支持类的概念,不过我们可以通过 strUCt 实现一些基础的类对象,如队列、堆栈等。通过对象的实现可以在一定程度上提高编程效率、简化 C程序设计。下面使用一个例子来介绍下如何在实现一个简单的类,希望对大家有些益处:
  
  /* 应用消息队列类 */
  struct AppQueue{
  struct AppFrame *pHead, *pTail;
  
  void (*InQueue)(struct AppQueue *papq, struct AppFrame *apf);
  struct AppFrame * (*OutQueue)(struct AppQueue *papq);
  unsigned char (*Empty)(struct AppQueue *papq);
  void (*ClearQueue)(struct AppQueue *papq);
  };
  
  /* AppQueue 类成员函数实体 */
  void apq_InQueue(struct AppQueue *papq, struct AppFrame *apf)
  {
  if(apf == NULL) return;
  
  apf-pNext = NULL;
  
  if(papq-pTail != NULL){
  papq-pTail-pNext = apf;
  papq-pTail = apf;
  }
  else{
  papq-pHead = papq-pTail = apf;
  }
  
  }
  
  struct AppFrame * apq_OutQueue(struct AppQueue *papq)
  {
  struct AppFrame *paf;
  
  paf = papq-pHead;
  
  if(papq-pHead != papq-pTail){
  papq-pHead = papq-pNext;
  }
  else{
  papq-pHead = papq-pTail = NULL;
  }
  
  return paf;
  }
  
  unsigned char apq_Empty(struct AppQueue *papq)
  {
  if((papq-pHead == papq-pTail) && (papq-pTail == NULL))
  return TRUE;
  else
  return FALSE;
  }
  
  void apq_ClearQueue(struct AppQueue *papq)
  {
  struct AppFrame *paf;
  while((paf = papq-OutQueue(papq)) != NULL){
  SysAppPool.Free(&SysAppPool, paf);
  }
  }
  
  /* AppQueue 类对象初始化 */
  void InitAppQueue(struct AppQueue *papq)
  {
  papq-pHead = papq-pTail = NULL;
  
  papq-InQueue = apq_InQueue;
  papq-OutQueue = apq_OutQueue;
  papq-Empty = apq_Empty;
  papq-ClearQueue = apq_ClearQueue;
  }
  
  Qiyaismine@163.com
展开更多 50%)
分享

猜你喜欢

在C语言中引入类的概念

编程语言 网络编程
在C语言中引入类的概念

C语言中trim的实现

C语言教程 C语言函数
C语言中trim的实现

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

C语言中可变参数的用法

编程语言 网络编程
C语言中可变参数的用法

C语言中的面向对象(1)-类模拟和多态,继承

编程语言 网络编程
C语言中的面向对象(1)-类模拟和多态,继承

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在C语言中以编程的方式获取函数名

编程语言 网络编程
在C语言中以编程的方式获取函数名

C语言中的面向对象(2)-C语言的多态实现

编程语言 网络编程
C语言中的面向对象(2)-C语言的多态实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

电脑显卡画质的决定因素有哪些方面

电脑显卡画质的决定因素有哪些方面

卡巴斯基管理工具安装前注意几点

卡巴斯基管理工具安装前注意几点
下拉加载更多内容 ↓