3

どういう意味ですか?参照渡しの使用は、参照を渡すことであるため、戻り値を必要とせずに直接変更できることを理解しています。ポインター渡しも同様ですが、実行時間が遅くなります。ただし、 * & が何をするのかわかりません。たとえば、

foo(int * & var) { }
4

3 に答える 3

5

参照によってポインターを渡すため、ポインターが指すものを変更し、それらの変更を呼び出し元に反映させることができます。

例えば:

void notByReference(int *p) {
    p = nullptr;
}

void byReference(int *&p) {
    p = nullptr;
}

int main() {
    int *i = new int;
    notByReference(i); //i is not changed since a copy of the pointer was passed
    byReference(i); //i itself is changed, leaking memory
}
于 2012-09-30T19:03:34.167 に答える
2

これにより、参照によってポインターを渡すことができます。これにより、関数はポインターを変更し、その変更を呼び出し元に表示する機会が与えられます。

そこで止まる必要はありません。たとえば、intへのポインタへのポインタを参照渡しできます。

void foo(int** &var)
于 2012-09-30T19:03:45.510 に答える
1

型修飾子は類似しており、互いに独立していることに注意して&ください*。これはsome_type&単に「への参照sometype」を意味します。これは、関数が呼び出し元の引数のバージョンを認識し、それを変更できることを意味します。がポインターの場合sometype、呼び出し元のバージョンの引数の型がポインターであり、関数がそのポインターを変更できることを意味します。

于 2012-09-30T19:16:56.350 に答える