int ** a 和 int & a 在函数中传递值的区别

Difference between passing value in function by int ** a and int & a

如果我在任何函数中传递 int **a 并且在同一位置传递 int& a 是否有任何区别,两者都会产生任何区别吗? 例如

Bool issafe(int**arr, intx, int y)

Bool issafe(int& arr, intx, int y)

'*' 符号和 '&' 符号之间有很多区别。

让我们从一般意义上和一些技术细节上看一下两者的含义。

引用运算符 (&)

&x 仅表示 x 的地址。它将是一个地址值,通常以十六进制表示法表示。

在函数中常用于引用传递: func(int &x, char a); 这将通过引用传递 x,但通过值传递 a

取消引用运算符 (*)

*p表示指向内存地址的指针。 我们可以使用以下格式为该指针分配一个地址:

int *p = x

int *p; p = &x

一旦指针指向一个地址,*px 就可以在程序的其余部分互换使用。

双重取消引用

当我们需要一个指向指针的指针时,就会使用**

例如,如果我们需要制作一个二维数组,我们可以使用**符号。

一个指针指向矩阵中第一行的第一个元素,而另一个指针指向行列表第一行.

因此,用几句话来回答你的问题: 是的,int ** aint & a 有很大的不同,以至于它们比 *&.

这样的对立更上一层楼