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 回答