これら3つの違いを理解するのに苦労しています。
const char * f() {
return "this is a test";
}
const char * g() {
const char * str = "test again";
return str;
}
const double * h() {
const double a = 2.718;
return &a;
}
として、の警告が表示h()されwarning: address of local variable ‘a’ returnedます。gcc -Wallこれは理にかなっていますが、コンパイラ( )がf()andg()関数で問題ない理由がわかりません。
- そこにローカル変数はありませんか?
- いつ、どのようにポインタが返される
f()かg()、割り当てが解除されますか?