【发布时间】:2019-02-26 22:27:53
【问题描述】:
我正在研究通过引用传递。这让我想知道在以下示例中会发生什么(用支持“通过引用”的伪 C 编写):
int foo(int a) {
a = 5;
return a * 2;
}
int main() {
int a = 1;
a = foo(a);
printf("%d",a);
return 0;
}
应该打印什么?如果我们只做foo(a); 而不分配到a 那么我们将得到5。但是分配时会打印什么?应该是5 还是10?
【问题讨论】:
-
你运行它时发生了什么?
-
由于您正在想象一个具有按引用传递的伪 C,您必须自己决定与参数传递相关的语义是什么。我不明白你怎么能指望 us 回答这个问题,至少不适合 SO。
-
在您为
pasudo-C语言提供“通过引用”变量传递的语义之前,没有人可以回答这个问题。 -
你为什么要假设一个伪 C?为什么不问
a = foo(&a);和int foo(int* a) { *a = 5; return *a * 2; }?或者问一下 C++ 在哪里可以找到int foo(int& a)? -
删除了
C标签。我认为只有一种方法可能,如果不是,那么查看对差异、好处以及使用它的真正 PL 的解释会更有帮助。我不认为这是一个“基于意见”的问题,但如果是的话,我很抱歉。