可能与以下问题重复:
c++ * vs & in function declaration 我知道这对许多人来说可能是一个非常基础的问题,但是即使在我最好的谷歌搜索中,我真的无法找到一个好的、详尽的解释。我相信答案在那里,所以我的搜索术肯定很糟糕。
在C++中,各种符号及其组合用于标记参数(以及这些参数的参数)。它们的确切含义是什么呢?
例如: void func(int *var)和void func(int **var)之间有什么区别?int &var呢?
对于返回类型以及参数,同样的问题存在。int& func(int var)与int* func(int var)有什么区别?在参数中,y = func(*x)与y = func(&x)有什么不同?
如果只能指出正确的方向,我就非常愿意阅读大量关于这个主题的资料。此外,我对一般的编程概念:OO、generics/templates等非常熟悉,只是不熟悉C/C++中使用的符号。
编辑: 看起来我可能给人留下了我不知道指针是什么的印象。我不知道怎么会这样 :)
所以为了澄清:我完全理解指针的工作原理。我没有掌握的是,例如 'void func(int &var)' 的含义。在赋值语句的情况下,'&' 操作符将位于右手边,如 'int* x = &y',但是在上述代码中,'&' 操作符实际上位于左手边。换句话说,它对 l-value 起作用,而不是 r-value。这显然不能有相同的含义。
希望现在我表达得更清楚些。
c++ * vs & in function declaration 我知道这对许多人来说可能是一个非常基础的问题,但是即使在我最好的谷歌搜索中,我真的无法找到一个好的、详尽的解释。我相信答案在那里,所以我的搜索术肯定很糟糕。
在C++中,各种符号及其组合用于标记参数(以及这些参数的参数)。它们的确切含义是什么呢?
例如: void func(int *var)和void func(int **var)之间有什么区别?int &var呢?
对于返回类型以及参数,同样的问题存在。int& func(int var)与int* func(int var)有什么区别?在参数中,y = func(*x)与y = func(&x)有什么不同?
如果只能指出正确的方向,我就非常愿意阅读大量关于这个主题的资料。此外,我对一般的编程概念:OO、generics/templates等非常熟悉,只是不熟悉C/C++中使用的符号。
编辑: 看起来我可能给人留下了我不知道指针是什么的印象。我不知道怎么会这样 :)
所以为了澄清:我完全理解指针的工作原理。我没有掌握的是,例如 'void func(int &var)' 的含义。在赋值语句的情况下,'&' 操作符将位于右手边,如 'int* x = &y',但是在上述代码中,'&' 操作符实际上位于左手边。换句话说,它对 l-value 起作用,而不是 r-value。这显然不能有相同的含义。
希望现在我表达得更清楚些。