使用函数将引用变量初始化为指针

时间:2013-10-19 20:55:41

标签: c++ pointers reference

为什么我无法通过函数使用预定义的指针变量初始化引用变量?

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??
}

2 个答案:

答案 0 :(得分:0)

你在这里按值返回一个指针:

int* f(int* p)
^^^^

这是一个副本,一个临时的,意味着你无法持有它的参考。

答案 1 :(得分:0)

这不起作用,因为您正在尝试引用f(p)返回的指针,这是一个在表达式结尾处超出范围的临时指针。您将创建一个悬空引用,编译器阻止您这样做。