将指针返回到局部变量有什么问题?
并且(我不知道这样做是否合法)在main中返回对指针的引用有什么问题? 例如:
int *p;
p=abc();
其中abc将返回int&
P.S。对不起,如果不清楚。我也很困惑:P
答案 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)
简单来说,局部变量只有在函数堆栈中才有效,一旦函数完成,它就会弹出函数堆栈。