在C语言中引入类的概念

2016-02-19 18:06 0 1 收藏

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

【 tulaoshi.com - 编程语言 】


  基于对象的程序设计的好处大家应该都有一定的体会,但是在 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

来源:https://www.tulaoshi.com/n/20160219/1616793.html

延伸阅读
作者在使用C语言编程实践过程中发现,尽管所编程序从语法上看正确的,能够调试通过,但实际执行结果却达不到程序编制的目的。现举几例说明如下,希望能起到帮助C语言初学者少走弯路的作用。 一.调用unlink失败的原因及解决方法 !-- frame contents -- !-- /frame contents -- unlink的原型在”io.h”中,...
#pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 ...
基本解释 const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。 问题: const变量 & ...
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子...
[ 发表日期:2002-1-4 9:28:46 ] 函数名: cabs 功 能: 计算复数的绝对值 用 法: double cabs(strUCt complex z); 程序例: #include stdio.h #include math.h int main(void) { struct complex z; double val; z.x = 2.0; z.y = 1.0; val = cabs(z); printf("The absolute val...

经验教程

205

收藏

92
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部