これら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()
、割り当てが解除されますか?