c struct, objective code

  1. ////////
  2. ////
  3. typedef int (*PF_EAT) (char* food, const int cnt);
  4. typedef int (*PF_WALK) (char* place, const int miles, int walk_miles);
  5. typedef void (*PF_SAY) (const char* to_who, const char* words);
  6.  
  7. #define FEMALE 0
  8. #define MALE 1
  9.  
  10. typedef struct{
  11. char* name;
  12. char sex;
  13. int age;
  14. PF_EAT eat;
  15. PF_WALK walk;
  16. PF_SAY say;
  17. }ST_PERSON;
  18.  
  19. struct foods{
  20. char name[];
  21. int cnt;
  22. };
  23.  
  24. struct foods food_to_full[] = {
  25. {"milk", },
  26. {"rice", },
  27. {"bread", }
  28. };
  29.  
  30. int f_eat (char* food, const int cnt)
  31. {
  32.  
  33. int index = ;
  34. int ret = -;//ret = -1, nothing to eat
  35.  
  36. if(food == ){
  37. return -;
  38. }
  39.  
  40. for(index = ; index < ; index++){
  41. if(strcmp(food, food_to_full[index].name) == ){
  42. ret = (cnt >= food_to_full[index].cnt ? : );//ret = 1, not full
  43.  
  44. printf("eat %d *%s %s\n", cnt, food, ret == ? "is full" : "is not full");
  45.  
  46. break;
  47. }
  48. }
  49.  
  50. return ret;
  51. }
  52.  
  53. int f_walk(char* place, const int miles, int walk_miles)
  54. {
  55. int ret = ;
  56. if(place == ){
  57. return ;
  58. }
  59.  
  60. ret = (miles - walk_miles > ) ? (miles - walk_miles) : ;
  61.  
  62. printf("walk to %s, %s", place, ret > ? "is on the load" : "has arrived the location" );
  63.  
  64. if(ret > )
  65. {
  66. printf(", remains %d miles to walk", ret);
  67. }
  68. printf("\n");
  69. return ret;
  70.  
  71. }
  72.  
  73. void f_say (const char* to_who, const char* words)
  74. {
  75. printf("Hi %s, %s\n",to_who, words);
  76. }
  77.  
  78. void person_one_day(ST_PERSON *person, struct foods* food_have, char *where, int miles, int walk_miles, char* to_who, char* words )
  79. {
  80. printf("%s, %s, %d years old\n", person->name, (person->sex == MALE) ? "male" : "female", person->age);
  81. person->eat(food_have->name, food_have->cnt);
  82. person->walk(where, miles, walk_miles);
  83. person->say(to_who , words);
  84.  
  85. printf("\n");
  86. }
  1. ST_PERSON Ocean = {
  2. .name = "Ocean",
  3. .sex = MALE,
  4. .age = ,
  5. .eat = f_eat,
  6. .walk = f_walk,
  7. .say = f_say,
  8. };
  9.  
  10. ST_PERSON Li = {
  11. .name = "Li",
  12. .sex = FEMALE,
  13. .age = ,
  14. .eat = f_eat,
  15. .walk = f_walk,
  16. .say = f_say,
  17. };
  1. 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!

  1.  

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

  1. */

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. Zend Studio 如何配置本地apache服务器使用xdebug调试php脚本

    本地环境搭配: apache 2.2 安装位置:D:/program files/Apache Software Foundation/Apache2.2 php 5.2.10 安装位置:C:/php ...

  2. 第2章 Python基础语法 -- 数据类型

    2.2数据类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间.基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 2.2.1 标准数据类型 在内存中存储 ...

  3. 第2章 Python基础语法--Hello python

    第2章 基础语法 2.1 基本介绍 2.1.1 Hello python 每个语言的开始都是从”HelloWorld”开始的,我们也不例外.打开已经安装好的Python编译环境,至于Python如何安 ...

  4. 2015-12-27 socket的用法

    sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) sk.bind(address) s.bind(address) 将套接字绑定到地址.a ...

  5. Qt5制作鼠标悬停显示Hint的ToolTip

    在日常生活中的使用的软件中,我们经常会遇到这样的情况. 我们在网页上,有些网页链接的文字(比如文章标题,知乎问题标题,百度的词条等)因为太长了,而显示不出来,但是鼠标悬停在上面的时候就可以显示出来.  ...

  6. JRebel 6 破解版及使用方法

    最近更新到jrebel6.2.1了,我自己做了个技术分享的微信公众号(茶爸爸),有心的朋友可以来这里一起学习 云盘下载链接: http://pan.baidu.com/s/1bnGzMUF 配置: - ...

  7. Java学习之链表

    数据结构学了,java实现下 package com.gh.Link; /** * 链表的实现 * @author ganhang * */ public class Links { public s ...

  8. Matrix Factorization, Algorithms, Applications, and Avaliable packages

    矩阵分解 来源:http://www.cvchina.info/2011/09/05/matrix-factorization-jungle/ 美帝的有心人士收集了市面上的矩阵分解的差点儿全部算法和应 ...

  9. mac 系统开发android,真机调试解决方式(无数的坑之后吐血总结)

    近期学习android开发,安装了ADT开发环境之后,启动模拟器,慢的要死啊,全然不如苹果的好用,没法,自己买个android手机,准备联机调试程序.没想到在这个过程中,遇到了好多的坑,作为一个新人, ...

  10. listview添加onItemClickListener

    MainActivity.java package com.wyl.listview04; import java.util.ArrayList; import java.util.HashMap; ...