为什么我们可以从函数返回局部变量的值而不是它的地址?比如我们在C语言中可以写'return a'但不能写'return &a'。
最佳答案
评论中示例的修改版本:
#include <stdio.h>
int* f() {
int a = 6, *p;
p = &a;
return p;
}
int g() {
int a = 6;
return a;
}
int main() {
int x = g();
int* y = f();
}
f
和 g
均按值返回。
One 返回一个 int
并将值存储在 x
中。现在,x
保存了之前在 a
中的值 6
。
另一个函数返回一个指针并将指针值存储在y
中。现在,y
保存了之前存储在 p
中的值。
问题只是指针现在无效(悬空),因为 p
指向的东西不再存在。
关于c - 函数可以返回值,但不能返回没有指针变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46751949/