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

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

提问人:Andriyas 提问时间:4/16/2022 最后编辑:Andriyas 更新时间:4/16/2022 访问量:277

问:

如果我传入任何函数并在我传递的同一位置,是否有任何区别,两者都会产生任何差异吗? 前任int **aint& a

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

Bool issafe(int& arr, intx, int y)
C++ 函数 按引用传递

评论

7赞 drescherjm 4/16/2022
int** a并且非常不同。int & a
0赞 WhozCraig 4/16/2022
这是一个天壤之别。并且已发布的函数声明 using 也不是有效的 C,因此该标签毫无意义。int& arr
2赞 Sami Kuhmonen 4/16/2022
int*并且会彼此更接近,双指针是非常不同的事情。这完全取决于你在做什么。 例如,可能是指向数组的第一个元素的指针,而永远不会是数组。int&int*int&
5赞 Eric Postpischil 4/16/2022
不要标记 C 和 C++,除非询问两种语言之间的差异或交互。C没有C++的“引用”功能,所以不是标准的C代码,所以这个问题不是关于C的。int& arr

答:

0赞 EmperorArthurIX 4/16/2022 #1

'*' 表示法和'&' 表示法之间有很多区别。

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

引用运算符 (&)

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

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

取消引用运算符 (*)

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

int *p = x

int *p; p = &x

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

双重取消引用

当我们需要指向指针的指针时,就会发生 of 的用法。**

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

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

因此,用几句结论性的话来回答您的问题: 是的,和 有很大的区别,以至于它们超越了像 和 这样的对立面。int ** aint & a*&