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 に答える