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