为什么我们可以从函数返回局部变量的值而不是它的地址?比如我们可以写回“'但不是“返回& a'在C.
答案 0 :(得分:0)
评论中示例的修改版本:
#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
都按值返回。
一个返回int
并将值存储在x
中。现在x
保留了先前6
中的值a
。
另一个函数返回一个指针,并将指针值存储在y
中。现在y
保存先前存储在p
中的值。
问题只是指针现在无效(悬空),因为p
指向的东西不再存在。
答案 1 :(得分:-1)
实际上,你可以。
但你必须正确定义你的功能:
int a = 0;
int* ReturnValAddress()
{
return &a;
}
虽然你可以发送任何局部变量地址,但请注意发送函数的局部变量地址没有任何意义因为返回后,局部变量会死!!但你可以像上面的代码一样发送全局变量地址。