成员函数返回一个函数
a* b::find() const
{
a* pointr = head;
return pointr;
}
这是我的代码,但 Visual Studio 在返回指针行中给指针加了下划线?我的代码有什么问题吗?
编辑:抱歉错字
a* b::find() const
{
a* pointr = head;
return pointr;
}
This is my code but visual studio is underlining pointr in the return pointr line? What's wrong with my code?
EDIT: SORRY TYPO
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在函数范围内没有任何声明为pointr的变量,除非您声明它,否则编译器如何知道?
pointr
和pointer
不一样,缺少一个e
。假设这是一个错字,
您的函数返回一个指针,但在这种情况下它指向的内容很重要。如果
head
是一个没有动态内存分配的局部变量或指针(指向局部对象),那么你的指针pointer
就指向一个局部对象,一旦函数调用,该对象就会被销毁返回并且将是一个悬空指针。记住规则:
您不应返回指向函数局部变量的引用或指针。
You d not have any variable declared as
pointr
in the scope of the function, How will the compiler know unless you declare it?pointr
andpointer
are not same, there is ane
missing.Assuming that is a typo,
Your function returns a pointer but what it points to is important in this case. If
head
is a local variable or pointer without dynamic memory allocation(pointing to local object) then your pointerpointer
is pointing to a local object, which will be destroyed once the function returns and will be a dangling pointer.Remember the Rule:
You should not return reference or pointer to an variable local to function.
您返回了错误的变量
在你的代码中。它没有在范围内定义。
You have a wrong variable returned
in your code. It is not defined in the scope.