17

在我看到的示例中,参数是通过以下方式通过引用传递的:

void AddOne(int &y)

在我拥有的代码中,我看到以下语法:

void AddOne(int& y)

我想知道它是否相同,或者第二种情况与第一种情况有所不同。

4

4 回答 4

26

两者完全相同。完全没有区别。

重要的是&应该在类型变量名之间。空格无所谓。

所以

void AddOne(int&  y);
void AddOne(int  &y);
void AddOne(int & y)
void AddOne(int   &     y);
void AddOne(int&y);

是一样的!

于 2013-03-13T16:03:01.217 回答
2

语言相同,只是代码约定不同

于 2013-03-13T16:02:31.300 回答
1

之间没有区别

void AddOne(int &y);

void AddOne(int& y);

乃至

void AddOne(int&y);

在 C++ 中,因为实际标记之间的空格被丢弃。

于 2013-03-13T16:32:46.570 回答
1

这是风格问题。两者都是正确和有效的。

然而,Bjarne Stroustrup 似乎更喜欢将&and *放在类型名称旁边,强调变量的类型:

int* i;   // i is a pointer to an int 
int& j;   // j is a reference to an int

有关指针,请参见此处:https ://www.stroustrup.com/bs_faq2.html#whitespace

请参阅“使用 C++ 的编程原理和实践”一书中的示例,并在此处获取参考:https ://stackoverflow.blog/2019/10/11/c-creator-bjarne-stroustrup-answers-our-top-five-c-questions /

于 2020-07-27T14:42:54.470 回答