Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296057
  • 博文数量: 61
  • 博客积分: 1581
  • 博客等级: 上尉
  • 技术积分: 741
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-24 13:52
个人简介

幸运儿不是我,因为我选择的路很难走.如果够出色也不能出头,至少要做到没第二个我.

文章分类

全部博文(61)

文章存档

2013年(14)

2012年(47)

分类: LINUX

2013-09-12 20:26:22

好久没有看到这么让我兴奋的代码了,在gcc中验证通过。
虽然简单,但是这确实是一份让C屌丝进入C高帅富的代码。
#include
#include
#include


typedef struct
{
int id;
char name[50]; 
void (*initial)(void);
void (*process)(int id, char *name);
void (*destroy)(void);
}stu;


void initial(void)
{
printf("initialization...\n");
}


void process(int id, char *name)
{
printf("process...\n%d\t%s\n",id, name);
}


void destroy(void)
{
printf("destroy...\n");
}


static stu stu1 = {
.id = 1000,
.name = "lebronlu",
.initial = &initial,
.process = &process,
.destroy = &destroy,


};
int main()
{
// stu *stu1;


//在VC和TC下都需要malloc也可以正常运行,但是linux gcc下就会出错,为段错误,必须malloc
// stu1=(stu *)malloc(sizeof(stu));
// 使用的时候必须要先初始化
/*
stu1->id=1000;
strcpy(stu1->name,"xufeng");
stu1->initial=&initial;
stu1->process=&process;
stu1->destroy=&destroy;
*/
/*
printf("%d\t%s\n",stu1->id,stu1->name);
stu1->initial();
stu1->process(stu1->id, stu1->name);
stu1->destroy();
*/


printf("%d\t%s\n",stu1.id,stu1.name);
stu1.initial();
stu1.process(stu1.id, stu1.name);
stu1.destroy();


// free(stu1);

return 0;
}

阅读(2171) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~