提问人:Andriyas 提问时间:4/16/2022 最后编辑:Andriyas 更新时间:4/16/2022 访问量:277
在函数中传递 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)
答:
0赞
EmperorArthurIX
4/16/2022
#1
'*' 表示法和'&' 表示法之间有很多区别。
让我们看一下两者的含义,从一般意义和一些技术细节来看。
引用运算符 (&)
&x
简单地说是 x 的地址。它将是一个地址值,通常以十六进制表示法表示。
它通常用于在函数中通过引用传递:这将通过引用传递,但通过值传递。func(int &x, char a);
x
a
取消引用运算符 (*)
*p
表示指向内存地址的指针。
我们可以使用以下格式为此指针分配一个地址:
int *p = x
或
int *p; p = &x
一旦指针指向一个地址,并且可以通过程序的其余部分互换使用。*p
x
双重取消引用
当我们需要指向指针的指针时,就会发生 of 的用法。**
例如,如果我们需要制作一个 2D 数组,我们可以使用符号。**
一个指针指向矩阵中第一行的第一个元素,而另一个指针指向行列表中的第一行。
因此,用几句结论性的话来回答您的问题:
是的,和 有很大的区别,以至于它们超越了像 和 这样的对立面。int ** a
int & a
*
&
评论
int** a
并且非常不同。int & a
int& arr
int*
并且会彼此更接近,双指针是非常不同的事情。这完全取决于你在做什么。 例如,可能是指向数组的第一个元素的指针,而永远不会是数组。int&
int*
int&
int& arr