标题:bitree已经是指针了为什么必须在void creattree(bitree &t) t前加'&'符号呢 ...
只看楼主
cataler
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2010-10-22
结帖率:100%
已结贴  问题点数:20 回复次数:6 
bitree已经是指针了为什么必须在void creattree(bitree &t) t前加'&'符号呢 要是不加的话就不能遍历了?
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    char elem;
    struct node * lchild;
    struct node * rchild;
}Node;
typedef Node  * bitree;
void creattree(bitree &t)
{
    char i;
    printf("请输入数值\n");
    scanf("%c",&i);getchar();
    if(i==' ') t=NULL;
    else
    {
        t=(bitree)malloc(sizeof(Node));
        t->elem=i;
        creattree(t->lchild);
        creattree(t->rchild);
    }
}
void bianli(bitree t)
{
    if(t)
    {
        if(t->elem)
        printf("%c\t",t->elem);
        bianli(t->lchild);
        bianli(t->rchild);
    }
}
void main()
{
    bitree h;
    creattree(h);
    bianli(h);
}
搜索更多相关主题的帖子: 遍历 void bitree creattree 指针 
2010-10-22 09:01
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:5 
void creattree(bitree &t) 肯定要加引用啊!要不你构造的树怎么传出去被别的函数利用啊! 也可以用指针的!

If You Want Something, Go Get It, Period.
2010-10-22 14:00
zhouxy6759
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2009-11-2
得分:0 
C中有引用吗?
2010-10-22 16:28
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:0 
哦!没注意啊!不好意思!C中没引用!是指针的地址!&取地址

If You Want Something, Go Get It, Period.
2010-10-22 18:17
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
得分:15 
这是考虑到程序的效率问题!!函数调用时,是进行复制传值的(对指针也适用!!),比如在本题中,你将creattree()中的形参定义成bitree类型,那程序运行时,就要复制
char elem;   struct node * lchild;    struct node * rchild;也就是sizeof(Node)个字节;
而定义成bitree *类型,只需复制4个字节(指针类型都是4个字节),这样前者要的时间就多了不少……
2010-10-24 20:39
pxhn111
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2010-8-2
得分:0 
这。。。这让我想起严蔚敏老师的数据结构书上。。。那些&是什么啊,当时写程序都是错,后来才知道那是引用,可是C语言哪来的引用。。。。。
2010-10-25 12:27
julian_ding
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-8-18
得分:0 
回复 5楼 S_12s
BiTree &T 和 BiTree T 两者有何区别啊?可以详细点吗?挺困惑的。。
(注:网上有人这样说,
Bitree T -> 定义Bitree一个实例对象:T;
Bitree &T -> 定义Bitree的实例对象的引用,就是一个已经定义的对象的别名,需要初始化;)
2011-08-18 10:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-323620-1-1.html




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

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