C语言中函数的返回值

在C函数中设置局部变量,然后把这个局部变量返回。返回值是指针的为什么不能返回?
请高手指点下。为什么不是指针的就被释放掉了。不是也可以在栈中拷贝一份么??/
我也来说两句 查看全部回复

最新回复

  • lzbgt (2007-6-22 11:57:04)

    见下

    [ 本帖最后由 lzbgt 于 2007-6-22 12:00 编辑 ]
  • lzbgt (2007-6-22 11:58:41)

    1.若要把局部变量返回,则局部变量必须是在堆上生成的,也就是说必须用malloc/new申请空间。然后返回指向该空间的指针即可。

    2.你所说的不能返回的原因在可能如下面代码所示:
    void *test()
    {
         int iRet=2;
        return &iRet;
    }
    虽然你返回了指针,但是,这个指针引领的是函数栈上的一个地址,因此,该指针所指向的内容是不确定的。

    [[i] 本帖最后由 lzbgt 于 2007-6-22 12:01 编辑 [/i]]