【发布时间】:2015-03-27 20:11:27
【问题描述】:
我正在编写一个代码来制作一个链表。 我为了使主函数中的链表更容易而编写的函数之一是[node is the name of a struct contains a.data b.pointer name next):
node& create_node(int value)
{
node newitem;
newitem.data=value;
newitem.next=NULL;
return (newitem);
};
当我像这样编写函数时,一切正常,但我想将函数头写为:
node * create_node(int value)
但是当我这样写的时候,我写了
return *newitem;
我得到一个错误。 我想问一下为什么 VS 以第二种方式向我显示错误以及使用 * 和 & 之间有什么区别理解使用引用需要额外的空间而不是贡献]。
编辑:感谢您的帮助,当我发布此内容时,我什至还没有对 main 函数进行测试,只是试图避免编译前的错误。 我花了一些时间,但现在我看到了我犯的根本错误。
【问题讨论】:
-
您的第一个函数不正确。您正在返回对本地对象的引用,该对象将在函数结束后被销毁。你也应该看看这个:codereview.stackexchange.com/questions/42958/…
-
@NathanOliver 我应该欺骗它:stackoverflow.com/questions/6441218/…
-
'当我像这样编写函数时,一切正常' - 除了警告你不应该忽略 - 你的代码根本被破坏了。
标签: c++ visual-studio-2010 pointers visual-c++ reference