这只是我想知道的事情。 那么这里, 假设我在函数中声明了一个变量,我将此变量作为指向另一个函数的指针传递。 当第一个函数(声明变量的地方)结束时,此变量会发生什么? 它是保留在堆栈上还是在函数结束时被删除了?
提前致谢= D
答案 0 :(得分:4)
当您定义变量的函数返回时,变量将被销毁,除非您将其声明为静态。检查C中的存储类。这是一个指针:http://aelinik.free.fr/c/ch14.htm
答案 1 :(得分:1)
当第一个函数结束时,变量被销毁,因此指针变为无效。
答案 2 :(得分:1)
如果您在堆栈上声明此变量,它将消失:
void foo()
{
int varInStack;
foo2(&varInStack);
// when foo returns, you loosed your variable.
}
你可以退货:
int foo()
{
int varInStack;
foo2(&varInStack);
return varInStack;
}