c struct, objective code

////////
////
typedef int (*PF_EAT) (char* food, const int cnt);
typedef int (*PF_WALK) (char* place, const int miles, int walk_miles);
typedef void (*PF_SAY) (const char* to_who, const char* words); #define FEMALE 0
#define MALE 1 typedef struct{
char* name;
char sex;
int age;
PF_EAT eat;
PF_WALK walk;
PF_SAY say;
}ST_PERSON; struct foods{
char name[];
int cnt;
}; struct foods food_to_full[] = {
{"milk", },
{"rice", },
{"bread", }
}; int f_eat (char* food, const int cnt)
{ int index = ;
int ret = -;//ret = -1, nothing to eat if(food == ){
return -;
} for(index = ; index < ; index++){
if(strcmp(food, food_to_full[index].name) == ){
ret = (cnt >= food_to_full[index].cnt ? : );//ret = 1, not full printf("eat %d *%s %s\n", cnt, food, ret == ? "is full" : "is not full"); break;
}
} return ret;
} int f_walk(char* place, const int miles, int walk_miles)
{
int ret = ;
if(place == ){
return ;
} ret = (miles - walk_miles > ) ? (miles - walk_miles) : ; printf("walk to %s, %s", place, ret > ? "is on the load" : "has arrived the location" ); if(ret > )
{
printf(", remains %d miles to walk", ret);
}
printf("\n");
return ret; } void f_say (const char* to_who, const char* words)
{
printf("Hi %s, %s\n",to_who, words);
} void person_one_day(ST_PERSON *person, struct foods* food_have, char *where, int miles, int walk_miles, char* to_who, char* words )
{
printf("%s, %s, %d years old\n", person->name, (person->sex == MALE) ? "male" : "female", person->age);
person->eat(food_have->name, food_have->cnt);
person->walk(where, miles, walk_miles);
person->say(to_who , words); printf("\n");
}
ST_PERSON Ocean = {
.name = "Ocean",
.sex = MALE,
.age = ,
.eat = f_eat,
.walk = f_walk,
.say = f_say,
}; ST_PERSON Li = {
.name = "Li",
.sex = FEMALE,
.age = ,
.eat = f_eat,
.walk = f_walk,
.say = f_say,
};
int main(int argc, char** argv) 
{
struct foods food_have_ocean = {"rice", };
struct foods food_have_li = {"milk", };
person_one_day(&Li, &food_have_li, "town", , , "Lucy", "I am so tired!");
person_one_day(&Ocean, &food_have_ocean, "town", , , "Lucy", "I am waiting for my wife");
return ;
}

/*

>gcc person.c ; ./a.out

Li, female, 28 years old
eat 1 *milk is not full
walk to town, is on the load, remains 4 miles to walk
Hi Lucy, I am so tired!


Ocean, male, 26 years old
eat 1 *rice is full
walk to town, has arrived the location
Hi Lucy, I am waiting for my wife

*/

c语言, objective code(new 1)的更多相关文章

  1. c语言, objective code(new 2)

    参考: 1. C中的继承和多态 http://www.cnblogs.com/skynet/archive/2010/09/23/1833217.html

  2. C语言工具---Code::Blocks

    Code::Blocks Code::Blocks 是一个开源的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.由纯粹的C++语言开发完成,它使用了著名的图形界面库wx ...

  3. iOS开发核心语言Objective C —— 全部知识点总结

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...

  4. iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法

    本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...

  5. iOS开发核心语言Objective C —— 所有知识点总结

    C和OC对比 OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头 OC中新增 ...

  6. 【转载】谷歌酝酿将苹果Swift作为安卓APP主要开发语言

    TNW中文站 4月8日报道 安卓操作系统的软件开发语言是Java,而在过去几年中,有关Java的版权,谷歌(微博)和甲骨文之间发生了长期的诉讼.最新外媒消息称,谷歌正在考虑将苹果开发的Swift作为未 ...

  7. Protobuf语言指南(转)

    Protobuf语言指南 l  定义一个消息(message)类型 l  标量值类型 l  Optional 的字段及默认值 l  枚举 l  使用其他消息类型 l  嵌套类型 l  更新一个消息类型 ...

  8. Protobuf语言指南

    Protobuf语言指南 l  定义一个消息(message)类型 l  标量值类型 l  Optional 的字段及默认值 l  枚举 l  使用其他消息类型 l  嵌套类型 l  更新一个消息类型 ...

  9. 【编辑器】Visual Studio Code

    1.官网:https://code.visualstudio.com/Download 2.插件:https://marketplace.visualstudio.com/VSCode https:/ ...

随机推荐

  1. MYSQL 好文章集锦

    比较细致的讲解MySQL数据库的数据结构以及实现原理 MySQL索引背后的数据结构及算法原理   MySQL的InnoDB索引原理详解 MySQL索引原理及慢查询优化 持续更新,快乐学习.

  2. Regex阅读笔记(三)之固化分组

    符号:?> 使用?>的匹配与正常的匹配无区别,但是如果匹配进行到此结构之后,此结构体的所有备用状态都会放弃,也就是括号内的子表达式中未尝试过的备用状态都不复存在了. 例如'(\.\d\d( ...

  3. 使用Jquery后去div个数

    <div id="tree1" class="tree-folder-content"> <div class="tree-fold ...

  4. 最小生成树Prim算法

    文章作者:甘航  文章来源:http://www.cnblogs.com/ganhang-acm/转载请注明,谢谢合作. 由于数据结构老师布置的一道题 ,我看prim算法看了半天还是一知半解. 在浏览 ...

  5. 小米2s的座充,看看这个是什么芯片? - 电池&综合DIY(Flashlight Electronics-Batteries Include - 手电大家谈-手电筒爱好者之家

    小米2s的座充,看看这个是什么芯片? - 电池&综合DIY(Flashlight Electronics-Batteries Include - 手电大家谈-手电筒爱好者之家 小米2s的座充, ...

  6. 【jQuery】使用JQ来编写面板的淡入淡出效果

    本文与上一篇的<[jQuery]使用JQ来编写最主要的淡入淡出效果>(点击打开链接)为姊妹篇. 但上一篇仅仅是对文本的基本控制,本篇则是对面板元素进行控制. 尽管功能上很类似,可是所用到的 ...

  7. sharepoint 2013 附件控件FileUpload怎样检验是否为图片的方法

    记录一下关于附件控件FileUpload怎样检验是否为图片的方法: function checkImg() { var fileObj =document.getElementById('<%= ...

  8. java实现随机验证码的图片

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc010006qo.html 1.一共需要2个常用java文件(RandomCode.java和RandomCod ...

  9. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--跨表操作)

    上篇文章我们介绍了如何利用DataSet 和 DataAdaper对象来对单张表进行操作. 本文我们将介绍如何进行跨表操作. 我们通过具体例子方式进行演示,例子涉及到三张表. 1)student表(学 ...

  10. PHP设计模式——策略模式

    概述 策略模式属于对象的行为模式.其用意是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化 UML图 策略模式中主 ...