| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 739 人关注过本帖
标题:初学者问一个关于结构体和指针的问题
只看楼主 加入收藏
zwb1986718
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-9-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
初学者问一个关于结构体和指针的问题
typedef struct BiTNode
 {
   TElemType data;
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
 }BiTNode,*BiTree;


这段代码中定义*BiTree,这是定义了一个什么?
搜索更多相关主题的帖子: 指针 结构体 
2009-10-18 23:10
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
是一个结构体指针!就像,int *p,是指向整型的指针,BiTree是指向结构体的指针。

离恨恰如春草,更行更远还生。
2009-10-18 23:15
zwb1986718
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-9-14
收藏
得分:0 
以下是引用玩出来的代码在2009-10-18 23:15:08的发言:

是一个结构体指针!就像,int *p,是指向整型的指针,BiTree是指向结构体的指针。
struct BiTNode
 {
   TElemType data;
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
 }BiTNode,*BiTree;


 关键是最前面有一个typedef,
 按照你的理解是这样的
 举例说:typedef int *point;

   可以这样定义么?

  

[ 本帖最后由 zwb1986718 于 2009-10-18 23:24 编辑 ]
2009-10-18 23:17
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
teypdef 是类型定义用的,teypedef integer int 就是说可以用integer来代替int用,如int i;和integer i;是相等的

离恨恰如春草,更行更远还生。
2009-10-18 23:33
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
typedef struct BiTNode
{
   TElemType data;
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
}BiTNode,*BiTree
再此结构中就可以用BiTree来定以其他变量,如struct BiTNode *p;和BiTree p;一样。

离恨恰如春草,更行更远还生。
2009-10-18 23:35
zwb1986718
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-9-14
收藏
得分:0 
以下是引用玩出来的代码在2009-10-18 23:35:41的发言:

typedef struct BiTNode
{
   TElemType data;
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
}BiTNode,*BiTree
再此结构中就可以用BiTree来定以其他变量,如struct BiTNode *p;和BiTree p;一样。
把两个例子做一个比较
typedef int intger;
  struct BiTNode
{
   TElemType data;
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
}BiTNode,看做是一个整体,相当于例子中的int
 也就是说typedef int *intger;

 这样也不对呀!

 
2009-10-18 23:46
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
typedef int *intger;这个是不对的。teypedef 原类型名(关键字) 新类型名(标识符)
 
teypedef  struct BiTNode  
{  
   TElemType data;  
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */  
}BiTNode,看做是一个整体,相当于例子中的int
看teypedef 原类型名(struct BiTNode) 新名(BiTNode);do you know?

离恨恰如春草,更行更远还生。
2009-10-18 23:57
zwb1986718
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-9-14
收藏
得分:0 
以下是引用玩出来的代码在2009-10-18 23:57:13的发言:

typedef int *intger;这个是不对的。teypedef 原类型名(关键字) 新类型名(标识符)
 
teypedef  struct BiTNode  
{  
   TElemType data;  
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */  
}BiTNode ...
你这是解释了BiTNode,这个我明白的!
 我想知道的是为什么BiTree前面有个*,也就相当于是这样
teypedef  struct BiTNode  
{  
   TElemType data;  
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */  
}*BiTree

 不好意思,初学者,问题比较多,比较简单,谢谢你耐心解答!
2009-10-19 00:10
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:10 
#define和typedef都类似一种宏定义咯,就是为已知的东西重新命名一个你喜欢的名字,比如你真名叫张三,但你网名叫张不三。以后在用的时候,就可以用张不三来代替喊你,就可以不用张三来喊你咯。

我可好玩啦...不信你玩玩^_^
2009-10-19 08:56
快速回复:初学者问一个关于结构体和指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033660 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved