安全中国首页 > 编程中心 > VC/C++编程
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:www.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

软件质量是被大多数程序员挂在嘴上而不是放在心上的东西!

更新时间:2005-8-31 1:55:00
责任编辑:池天
热 点:
基于对象的程序设计的好处大家应该都有一定的体会,但是在 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; 

 
学习软件编程开发技术,推荐加入以下软件编程培训班:
易语言软件编程培训班(简单易学)  Delphi软件编程培训班  VC++软件编程培训班
VB软件编程培训班  JAVA高端编程就业研发班

学习网站开发制作技术,推荐加入以下网站开发培训班:
ASP.net网站开发项目实战班  ASP语言网站建设培训班

学习网络安全入侵防护技术,推荐加入以下技术培训班:
大型网络安全入侵防护班  网站脚本程序全方位安全检测班

学习网络管理、网吧运营维护技术(网管),推荐加入以下培训班:
大型网吧技术管理人才特训班  Linux网络嵌入架构工程师培训班

学习专项特殊技术,推荐加入以下专项技术培训班:
软件与游戏外挂脱壳破解班(逆向工程)  赚钱王道-网赚技能培训班  Flash动画设计师就业特训班

 
相关编程
一日一文章
 
一日一软件
一日一动画