-1

正如您在下面我将要提供的示例中看到的那样,我同时使用通过引用和通过地址...

#include<iostream>
#include<string>

void passByAddress(int *a);
void passByReference(int &a);

int main() {
    int betty = 21;
    int setty = 45;

    passByAddress(&betty);
    passByReference(setty);

    std::cout << "Betty : " << betty << std::endl;
    std::cout << "Setty : " << setty << std::endl;
}

//Pass By Adress
void passByAdrress(int *a) {
    *a = *a + 5;
    //Memory Adress of a.
    //So gives hexa decimal.
    std::cout << "Address : " << a << std::endl;
    //Actual Value of adress
    std::cout << "Address's Value : " << *a << std::endl;
}
//Pass By Reference
void passByReference(int &a) {
    a = a + 5;
    //Memory Address of a.
    //So gives hexa decimal.
    std::cout << "Adrress : " << &a << std::endl;
    //Actual Value of address
    std::cout << "Address's Value " << a << std::endl;
}

所以在这里我真的不明白使用 passbyaddress 和 passbyreference 的区别..虽然我理解这两者和 Pass By Value 之间的区别(因为按值传递传递变量的副本而不是内存地址),我不明白这两者有什么区别。很多人只是说“使用传递引用更好”,或者“一直使用传递引用,除非你必须使用传递地址”。但我想知道真正的区别,所以我可以决定哪个在我以后的项目中使用。

谢谢你。

4

1 回答 1

-1

在内部,两者通常都做同样的事情:传递指针。但是当你通过参考时,你不能直接做类似的事情*(p + 1)

这里有更多的解释https://www.quora.com/What-is-the-difference-between-pass-by-reference-and-pass-by-pointers-to-a-function

于 2016-04-26T12:19:20.043 回答