这在C++中意味着什么 **&a

What does this mean **&a in C++

本文关键字:什么 意味着 C++ 这在      更新时间:2023-10-16

下面两个功能有什么区别?

void init1(int **&a, int n)
{
    a = new int *[n];
    for (int i = 0; i<n; i++)
        a[i] = new int [n];
}

void init1(int **a, int n)
{
    a = new int *[n];
    for (int i = 0; i<n; i++)
        a[i] = new int [n];
}

谢谢

两者的区别在于,在int **&a版本中,a已通过引用传递。如果更改指针本身的值(也就是说,编写类似a = a+5;的代码),则a的值将在原始调用函数中被修改。

第一个函数通过引用传递双指针a,第二个函数仅将双指针a作为参数传递。

在第一个函数中,对a所做的任何修改都将在函数退出后保留,而在第二个函数中,对a的任何修改都不会保留。