返回指向局部变量的指针

时间:2014-09-11 22:11:49

标签: c pointers

将指针返回到局部变量有什么问题?

并且(我不知道这样做是否合法)在main中返回对指针的引用有什么问题? 例如:

int *p;
p=abc();

其中abc将返回int&

P.S。对不起,如果不清楚。我也很困惑:P

3 个答案:

答案 0 :(得分:1)

您可以在语法上返回指向局部变量的指针,但该函数返回后该变量将不再有效。

答案 1 :(得分:1)

如果您的代码是:

int *abc() {
    int n = 3;
    return &n;
}

void foo() {
    int m = 4;
}

int main() {
    int *p;
    p=abc();
    foo();
    printf("%d", *p);
}

然后m可能会覆盖n,结果将是4。

答案 2 :(得分:0)

简单来说,局部变量只有在函数堆栈中才有效,一旦函数完成,它就会弹出函数堆栈。