0

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

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

2 回答 2

1

这是行不通的,因为您试图引用由返回的指针f(p),这是一个在表达式末尾超出范围的临时指针。您将创建一个悬空引用,而编译器会阻止您这样做。

于 2013-10-19T20:57:15.203 回答
0

您在这里按值返回指针:

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

它是一个副本,一个临时的,这意味着你不能持有对它的引用。

于 2013-10-19T20:56:57.713 回答