C/C++ 允许返回指针:
int* returnpointer() {
int c = 1;
int *d = &c;
return d;
}
以便它可以在调用者函数中使用:
int* p = returnpointer();
这是我最习惯的风格,因为它最自然。
那么,如果上述条件在正常情况下就足够了,为什么 C/C++ 会提供返回地址的语言功能呢?IE:
int& returnpointer() {
int c = 1;
int *d = &c;
return *d;
}
通过调用者调用:
int* p = &returnpointer();
鉴于我更精通前者,后者是否有哪些功能是前者不太适合做的?
PS:我知道这样的代码很危险,因为它可能涉及指向在函数退出堆栈时不再存在的变量的指针。然而,这不是这个问题的范围。