尊宝国际娱乐APP下载

设为首页收藏本站

编程十万个为什么,属于程序员的编程论坛

 找回密码
 5秒快速注册
QQ登录 只需一步,快速开始
搜索
楼主: 凌云紫冥
打印 上一主题 下一主题

[C/C++每日一练] C/C++贪吃蛇2011/4/28

  [复制链接]
11
发表于 2011-4-28 12:29:27 | 只看该作者
今天是没空了,估计得明天以后了,或者今晚有空就瞧一下
回复 使用道具 举报
12
 楼主| 发表于 2011-4-28 13:35:57 | 只看该作者
369778072 发表于 2011-4-28 13:33
回复 凌云紫冥 的帖子

snake *head, *tail;

两者为空的话就是 head = NULL, tail = NULL;
head没有存储类型或者类型说明符?
不是定义了snake *head吗?
回复 使用道具 举报
13
 楼主| 发表于 2011-4-28 13:46:16 | 只看该作者
369778072 发表于 2011-4-28 13:44
回复 凌云紫冥 的帖子

定义了啊。。。怎么会通过不了呢。。。郁闷

。。把你的代码添上来看看
回复 使用道具 举报
14
发表于 2011-4-28 13:55:32 | 只看该作者
  1. typedef struct SnakeNode
  2. {
  3.         int x; int y;
  4.         SnakeNode *prior;
  5.         SnakeNode *next;

  6.         SnakeNode(int a, int b)
  7.         {
  8.                 x = a;
  9.                 y = b;
  10.                 prior = NULL;
  11.                 next = NULL;
  12.         }
  13. } SnakeNode;

  14. typedef struct snake
  15. {
  16.         SnakeNode *head;
  17.         SnakeNode *tail;
  18.         snake(int a,int b)
  19.         {
  20.                 head = new SnakeNode(a,b);
  21.                 tail = head;
  22.         }
  23. } Snake;


  24. snake *add_to_snake (Snake *snake , int a, int b)
  25. {
  26.         SnakeNode* new_node = new SnakeNode(a,b);
  27.         new_node->next = snake->head;
  28.         snake->head->prior = new_node;
  29.         snake->head = new_node;

  30.         return snake;
  31. }
复制代码
回复 使用道具 举报
15
 楼主| 发表于 2011-4-28 14:09:35 | 只看该作者
1609 发表于 2011-4-28 13:55

既然想封装,我建议你用class 也不需要typedef 像你这种让人感觉有点怪异。
回复 使用道具 举报
16
发表于 2011-4-28 14:13:49 | 只看该作者
回复 凌云紫冥 的帖子

前两天 笔试的时候遇到了这么个问题。。。
刚好拿今天这个东西练练, 了解一下细节。。

发现一个问题,  struct里面的构造函数
用SnakeNode* new_node = new SnakeNode(a,b) 这样没有问题
SnakeNode new_node(a,b) 的话,在第2个newnode初始化的时候 前面一个的值就变了。。。
求解答。。。
回复 使用道具 举报
17
 楼主| 发表于 2011-4-28 14:27:34 | 只看该作者
回复 1609 的帖子

不知道你是怎么用的。
光看程序应该没错
回复 使用道具 举报
18
 楼主| 发表于 2011-4-28 14:39:21 | 只看该作者
1609 发表于 2011-4-28 14:13
回复 凌云紫冥 的帖子

前两天 笔试的时候遇到了这么个问题。。。

汗,,刚没看懂你意思。 你意思是说用SnakeNode new_node(a,b)
而不用SnakeNode* new_node = new SnakeNode(a,b) 是吧。
因为第一个是在栈中分配,add_to_snake函数调用完成系统就把new_node自动释放了。 当初数据就乱了

回复 使用道具 举报
19
 楼主| 发表于 2011-4-28 14:40:50 | 只看该作者
new出来的在堆中,,是程序员手动释放。
栈中分配的超出作用域系统就会帮你自动回收。
回复 使用道具 举报
20
发表于 2011-4-28 14:42:21 | 只看该作者
SnakeNode* new_node = new SnakeNode(a,b) ;SnakeNode *head = new_node;
SnakeNode new_node(a,b); SnakeNode *head = &new_node;
这两句有什么区别啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 5秒快速注册
本版积分规则
关闭

BcWhy推荐上一条 /1 下一条

QQ|关于我们|最新帖子|小黑屋|手机版|编程十万个为什么 ( 粤ICP备16108587号-2   GMT+8, 2017-8-17 17:33 , Processed in 0.164085 second(s), 32 queries , File On.
Powered by Discuz! X3.3 © 2001-2017 Comsenz Inc.
快速回复 返回顶部 返回列表
尊宝国际娱乐APP下载亚虎娱乐手机官方网站亚虎国际娱乐齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载
优乐娱乐亚虎娱乐手机官方网站亚虎国际娱乐梦之城娱乐
尊宝国际娱乐APP下载尊宝国际手机首页尊宝国际娱乐城齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载