【发布时间】:2011-05-21 22:39:20
【问题描述】:
为我的期末考试而学习,并遇到了这个过去的考试问题:
考虑以下用类 C 表示法编写的程序:
int i = 1;
A[] = {4, 0, 1, 2};
void mystery05(int from, int to)
{
int temp;
temp = A[from];
A[from] = A[to];
A[to] = temp;
i = i + 2;
to = -1;
}
int main(void)
{
mystery05(A[i+2], A[i]);
}
在下表中,在 main.js 中调用神秘05 后,用适当的变量值填写方框。每行对应一个特定的参数传递样式(即使用列出的样式而不是默认的 C 语言语义)。假设数组从 0 开始索引。
style |___i___|__A[0]__|__A[1]__|__A[2]__|__A[3]__|
call-by-value |_______|________|________|________|________|
call-by-name |_______|________|________|________|________|
call-by-reference |_______|________|________|________|________|
call-by-value-result|_______|________|________|________|________|
我不知道该怎么做,但如果它是常规的 C 语义,我想答案应该是
i = 3; A[0] = 4; A[1] = 2; A[2] = 1; A[3] = 0
【问题讨论】:
-
你的问题到底是什么?
-
我希望能够学习如何使用不同的参数传递样式正确填写表格。它们为什么以及如何不同。
-
@Bobby S:我们不会为你写出完整的答案。但请接受提示。它不是“常规的 C 语义”。每一行都是不同的语义,而不是“常规 C”。
-
@S.Lott:我很清楚这些行中的每一行都不是常规的 c 语义,这就是问题的重点。每一行都是不同的参数传递语义。
-
@Bobby S.“每一行都与参数传递语义不同”准确地说。那你的问题是什么?
标签: c parameters reference semantics