函数可以返回值但不返回没有指针变量的地址

时间:2017-10-15 05:13:21

标签: c

为什么我们可以从函数返回局部变量的值而不是它的地址?比如我们可以写回“'但不是“返回& a'在C.

2 个答案:

答案 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();
}

fg都按值返回。

一个返回int并将值存储在x中。现在x保留了先前6中的值a

另一个函数返回一个指针,并将指针值存储在y中。现在y保存先前存储在p中的值。

问题只是指针现在无效(悬空),因为p指向的东西不再存在。

答案 1 :(得分:-1)

实际上,你可以。

但你必须正确定义你的功能:

int a = 0;

int* ReturnValAddress()
{
    return &a;
}

虽然你可以发送任何局部变量地址,但请注意发送函数的局部变量地址没有任何意义因为返回后,局部变量会死!!但你可以像上面的代码一样发送全局变量地址。