| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 548 人关注过本帖
标题:这个函数怎么调用?
只看楼主 加入收藏
sxl4751
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
这个函数怎么调用?
int preordertraverse(bitree t,int(* printelement)(elemtype e))
{
    if(t)
    {
        if(printelement(t->data))
            if(preordertraverse(t->lchild,printelement))
                if(preordertraverse(t->rchild,printelement))
                    return OK;
        return ERROR;
    }
    else return OK;
}
怎么在其他函数中调用这个函数啊?调用时,应该怎么写啊?preordertraverse(t,int(* printelement)(elemtype e));红色部分应该写什么?感谢赐教啊~~
printelement(char e)这是个函数,elemtype为char

[ 本帖最后由 sxl4751 于 2010-4-26 22:34 编辑 ]
搜索更多相关主题的帖子: 函数 
2010-04-26 22:09
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:6 
你最好返回数值,毕竟计算机室按数存取,然后在主函数中调用,然后把实参传递进去,要不把代码都发上来
2010-04-26 22:18
sxl4751
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-24
收藏
得分:0 
int printelement(elemtype e)
{
    printf("%c",e);
    return OK;
}

int preordertraverse(bitree t,int(* printelement)(elemtype e))
{
    if(t)
    {
        if(printelement(t->data))
            if(preordertraverse(t->lchild,printelement))
                if(preordertraverse(t->rchild,printelement))
                    return OK;
        return ERROR;
    }
    else return OK;
}
2010-04-26 22:32
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:6 
如果前面有定义
elemtype e;
bitree t;
则调用时这样写就好
preordertraverse(t,printelement(e));
2010-04-26 22:49
sxl4751
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-24
收藏
得分:0 
回复 4楼 NOMIPS
还是不行

D:\数据结构\6\6.cpp(75) : error C2664: 'preordertraverse' : cannot convert parameter 2 from 'int' to 'int (__cdecl *)(char)'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.

6.obj - 1 error(s), 0 warning(s)
2010-04-26 22:58
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:0 


preordertraverse(t,printelement);
楼主试试这个。昨晚看错了。呵呵
收到的鲜花
  • sxl47512010-04-28 09:34 送鲜花  2朵  
  • sxl47512010-04-28 09:35 送鲜花  2朵  
2010-04-27 09:09
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:6 
int(* printelement)(elemtype e)是个函数指针

只要有函数的形参表是elemtype,返回值是int的话都可以作为preordertraverse的实参。。。

调用的时候可以写成preordertraverse(t, printelement);或者preordertraverse(t, &printelement);
这两者写法没有区别。。。

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-04-27 09:36
sxl4751
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-24
收藏
得分:0 
谢谢6、7楼~ok了~
2010-04-28 08:51
sxl4751
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-24
收藏
得分:0 
同时也谢谢其他帮助我的兄弟门,
2010-04-28 08:59
快速回复:这个函数怎么调用?
数据加载中...
 
   



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

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