我很难理解这三者之间的区别:
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()
和g()
函数没有问题。
- 那里难道不是有一个局部变量吗?
f()
或g()
返回的指针何时以及如何被释放?