これは私が疑問に思っていたものです。さて、ここで、関数で変数を宣言するとします。この変数を別の関数へのポインターとして渡します。最初の関数(変数が宣言されている場所)が終了すると、この変数はどうなりますか?スタックに残りますか、それとも関数の終了時に削除されますか?
よろしくお願いします=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;
}
最初の関数が終了すると、変数は破棄されるため、ポインターは無効になります。