0

这只是我想知道的。好吧,假设我在函数中声明了一个变量,我将这个变量作为指向另一个函数的指针传递。当第一个函数(声明变量的地方)结束时,这个变量会发生什么?它是留在堆栈上还是在函数结束时被删除?

提前谢谢=D

4

3 回答 3

4

当您定义变量的函数返回该变量时,该变量被销毁,除非您将其声明为静态的。检查 C 中的存储类。这是一个指针:http ://aelinik.free.fr/c/ch14.htm

于 2012-05-03T12:42:02.310 回答
1

当第一个函数结束时,变量被销毁,因此指针变得无效。

于 2012-05-03T12:41:19.310 回答
1

如果您在堆栈上声明此变量,它将消失:

void foo()
{
    int varInStack;
    foo2(&varInStack);

    // when foo returns, you loosed your variable.
}

您可以退货:

int foo()
{
    int varInStack;
    foo2(&varInStack);

    return varInStack;
}
于 2012-05-03T12:43:59.860 回答