为什么返回值不对

mn_th 2002-02-15 09:55:39
bool CreateNode(BiTNode* node,char ch)
{
BiTNode* pnode=new BiTNode;
if(pnode==NULL)
{
return false;
}
pnode->data=ch;
node=pnode;
return true;
}

CreateNode(T,ch)l
但是T无法得到node所指向的地址,这样做不可以吗
...全文
53 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjpower 2002-02-17
  • 打赏
  • 举报
回复
你的调用形式好象有问题,按照你的方法T是不能有什么传回值的,这个问题对于熟悉C的人多知道。
cowboy1114 2002-02-17
  • 打赏
  • 举报
回复
BiTNode * CreateNode(BiTNode* node,char ch)
{
BiTNode* pnode=new BiTNode;
if(pnode==NULL)
{
return NULL;
}
pnode->data=ch;
node=pnode;
return node;
}
zosatapo 2002-02-16
  • 打赏
  • 举报
回复
zheng_can() 的方法也是很好的方法。因为MS的com库中函数多是采用这样的方式来传输对象指针的。
zosatapo 2002-02-16
  • 打赏
  • 举报
回复
主要是要注意对象的生存周期。不应该返回局部变量的指针之类的东东拉,
这是最基本的c/c++常识。下面是我初步修改后的程式:
注意看注释。
bool CreateNode(BiTNode* node,char ch)
{
BiTNode* pnode=new BiTNode;
if(pnode==NULL)
{
return false;
}
pnode->data=ch;

//node=pnode;
//应该采用下面的这种形式返回局部的对象变量的拷贝
*node=*pnode;
return true;
}

实际上问题远没有这样简单的,具体的还要看你的类的定义。
比如你有没有采用虚拟指针,动态分配内存,以及你的赋值运算符,
拷贝构造函数等是如何定义的,但是一般来说上面的方式已经足够了。

loader 2002-02-15
  • 打赏
  • 举报
回复
CreateNode(&T,ch);
正确,应该是这么调用的!!!!!!!!!!!!!
maoxingliang 2002-02-15
  • 打赏
  • 举报
回复
看来你是一个初学者,你的
bool CreateNode(BiTNode* node,char ch)
{
。。。。
}
中的BiTNode *node是一个局部指针变量,函数开始时被你的参数T初始化,函数结束,其便自动消亡,我同意jinzhao2(金钊)的看法
zheng_can 2002-02-15
  • 打赏
  • 举报
回复
同意jinzhao2的
你应该使用引用,直接传指会导致所引起的修改只在函数内有效
或者,你可以传入指向T的指针(传址)
bool CreateNode(BiTNode**node, char ch);
调用:CreateNode(&T,ch);
Lemon-sai 2002-02-15
  • 打赏
  • 举报
回复
应该是可以的
可能是没有分配成功而提前退出了吧,
或者T不是指针
jinzhao2 2002-02-15
  • 打赏
  • 举报
回复
不可以。实际上,执行CreateNode(T,ch)时,编译器把T(一个BiTNode*类型的数据)复制了一份,所以函数中node=pnode改变的是复制值.
按你的要求可将函数定义写为:
bool CreateNode(BiTNode* &node,char ch)
就行了。

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧