为什么我无法通过函数使用预定义的指针变量初始化引用变量?
int * f(int * p) {
return p;
}
int main(){
int s=10;
int *p=&s;
int *&ref1 = p; //no error given here
int *&ref2 = f(p); //gives error cannot initialize int * & with int * why??
}
答案 0 :(得分:0)
你在这里按值返回一个指针:
int* f(int* p)
^^^^
这是一个副本,一个临时的,意味着你无法持有它的参考。
答案 1 :(得分:0)
这不起作用,因为您正在尝试引用f(p)
返回的指针,这是一个在表达式结尾处超出范围的临时指针。您将创建一个悬空引用,编译器阻止您这样做。