C++传递指向静态函数的指针在执行期间改变值

Sum*_*mod 3 c++

这是我的代码

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中,值会发生变化.所以我觉得函数调用出了问题.任何帮助,将不胜感激.

R. *_*des 8

您将返回指向局部变量的指针.当您稍后在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)