指针型变量的一个问题

这两种有什么区别啊
特别是加了的那种 表达什么意思啊(不好意思特殊符号它不允许我打出来)

img

加了&符号的是引用参数,没加的是传值参数。
区别是,如果是传值参数,会克隆实参并传给形参。所以,在函数内部对形参进行更改并不会影响外部的实参。

如果是引用参数,实际上形参就是实参的别名,它们公用同一块内存地址,所以在函数内部对形参的更改也会影响到外部的实参。

举个典型的例子,写一个Swap函数,用来交换两个数。
如果这样写,是没有效果的,因为在调用Swap函数时传入的是num1num2的副本:

void Swap(int a, int b)
{
    int temp = a;
    a = b;
    b = a
}

int main()
{
    int num1 = 0, num2 = 1;
    Swap(num1, num2);
    return 0;
}

但是如果这样写,就有效了,因为形参ab与实参num1num2指向用一块内存,在Swap中做的更改也会影响到num1num2

void Swap(int &a, int &b)  // 使用引用参数
{
    int temp = a;
    a = b;
    b = a
}

int main()
{
    int num1 = 0, num2 = 1;
    Swap(num1, num2);
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^