这是我的代码
Node* Node::createNode(int n)
{
Node newNode(n);
Node *temp = &newNode;
return temp;
}
void Node::printNode(Node* node)
{
cout << node->data << "\t" << node->next << endl;
system("pause");
}
Run Code Online (Sandbox Code Playgroud)
这是主要功能
int main(int argc, char* argv[])
{
Node *head = Node::createNode(10);
Node::printNode(head);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题,我原本打算打印10.相反,我的垃圾值为-858993460.我注意到,直到这一点,参数传递给函数,它保留正确的值.但是在函数printNode中,值会发生变化.所以我觉得函数调用出了问题.任何帮助,将不胜感激.
您将返回指向局部变量的指针.当您稍后在main函数中使用该指针时,它指向的变量早已消失,您将进入未定义行为的领域.
您可以按值返回节点:
Node Node::createNode(int n)
{
Node newNode(n);
return newNode;
}
Run Code Online (Sandbox Code Playgroud)
或者您可以动态分配一个并返回一个智能指针,启用范围绑定资源管理(又称RAII):
std::unique_ptr<Node> Node::createNode(int n)
{
return std::unique_ptr<Node>(new Node(n));
}
Run Code Online (Sandbox Code Playgroud)