从函数返回指向结构的指针

时间:2017-09-08 14:29:01

标签: c++

我试图从函数返回指向结构的指针。我编写了以下代码,但它没有工作,并给出了分段错误。

#include <iostream>

using namespace std;

struct Node {
    int val;
    Node* next;
    Node(int x): val(x), next(NULL) {};
};

Node* f(int a){
    Node x = Node(10);
    return &x;
}

int main(){
    Node *x = f(10);
    cout << x->val << "\n";
    return 0;
}

以下代码正常工作。

#include <iostream>

using namespace std;

struct Node {
    int val;
    Node* next;
    Node(int x): val(x), next(NULL) {};
};

Node* f(int a){
    Node *x = new Node(10);
    return x;
}

int main(){
    Node *x = f(10);
    cout << x->val << "\n";
    return 0;
}

为什么第一个代码不起作用而第二个代码正在工作?

1 个答案:

答案 0 :(得分:1)

除非动态分配或静态变量,否则永远不应返回对局部变量的引用,因为当函数返回时,它将被销毁,然后您将尝试访问您无权访问的区域。