重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
double* weird( double a, double b )
{
double c;
c = pow( a + b, 0.5 );
return &c;
}
ほとんどの人にとっては些細なことかもしれませんが、ここで何がうまくいかないのかわかりません。
重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
double* weird( double a, double b )
{
double c;
c = pow( a + b, 0.5 );
return &c;
}
ほとんどの人にとっては些細なことかもしれませんが、ここで何がうまくいかないのかわかりません。
ローカル変数へのポインタを返すため、これは非常に間違っています。
が返されると、スコープが関数で&c
ある変数が破棄されるため、メモリ内のランダムな領域を指すポインタが提供されます。これは未定義の動作です。c
weird
関数のスコープ内でローカル変数を宣言しますc
。関数を終了すると、その変数は無効になります。したがって、その変数へのポインターは、その後は何の意味もありません。
他の人が言ったように。
static
メソッド内または中括弧の間で宣言されている以外の変数{}
にはローカルスコープがあります。メソッドから出るとすぐに、変数は破棄されます。
それでも必要な場合は、staticを使用してください
static double c;