gpt4 book ai didi

c - 特定的参数传递样式 : Call-By-Value, Call-By-Name 等

转载 作者:行者123 更新时间:2023-12-04 10:08:14 24 4
gpt4 key购买 nike

为我的期末考试而学习,并遇到了这个过去的考试问题:

考虑以下用类 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 语义,我想答案是

我 = 3; A[0] = 4; A[1] = 2; A[2] = 1; A[3] = 0

最佳答案

@S.洛特:
我认为指向字符串和数组的指针是通过引用调用的。我错了吗?

我同意:不想做所有的问题。如果他有考试,他应该得到更多的线索。
我想回答第一行,但只是为了看看我是否理解正确。
所以我可能是错的!

按值调用:除非变量是全局变量,否则不会更改值
在这种情况下,它们必须是; proc如何使用i。

i 和 A 数组都是全局的。

proc 中发生的事情会改变这些值。

i 从值 1 开始,因此交换了 A[3] 和 A[1] 的值。

A[3] 现在 0 , A[1] 现在 2 。 A[0] 和 A[2] 不变。

最后我的值改为3

我认为考试 q 错过了一个技巧,因为在 proc 调用之后没有询问“to”的值。

关于c - 特定的参数传递样式 : Call-By-Value, Call-By-Name 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com