【发布时间】:2022-01-11 19:34:38
【问题描述】:
我是 C++ 新手,我在这里写伪代码:
void fn(a) {}
fn(b)
假设在函数体fn中发生的是这个赋值是正确的
`a = b`
我知道我们可以传递引用/指针而不仅仅是值。我得到它。但它的核心仍然是 parameter = argument 的赋值,对吗?
我想知道:
- 是否有任何官方术语?
- 这个分配究竟是什么时候发生的,究竟是什么导致了这种情况发生?是编译器吗?
【问题讨论】:
-
或多或少。不完全是赋值,更像是初始化。 (一)为了什么? “通过争论”听起来很正式吗? (2) 当然是编译器,还能是什么?它发生在函数被调用之前?
-
如果没有最低限度的 valid 和 compiling 代码,假设任何事情都不是真正“正确”的。也许您正在寻找术语"call by value" and "call by reference"。 C 中不存在引用调用;因此为什么双重标签(加上无效/不完整的代码)在这里特别成问题。
-
除非询问两种语言之间的差异或交互,否则不要同时标记 C 和 C++。不同语言的答案可能不同。
-
嘿,谢谢你的建议。我删除了
c标签。 -
@Joji 还需要一些编译代码。考虑这两个不同的函数,用一个值代替“a”,以及这可能如何影响答案和/或正在寻找的内容:
void f(int x) { x = 2; }和void g(int& x) { x = 2; }。
标签: c++ parameter-passing function-parameter