gpt4 book ai didi

c++ - 参数传递机制?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:59 25 4
gpt4 key购买 nike

“按值-结果传递”、“按引用传递”和“按名称传递”有什么区别?

我有一个 C++ 程序:

#include <stdio.h>
#include <iostream>
using namespace std;

void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
int value = 2, list[5] = {1, 3, 5, 7, 9};
swap(value, list[0]);
swap(list[0], list[1]);
swap(value, list[value]);
return 0;
}

这是调用交换后的解决方案:http://imgur.com/1HkCAnm我不知道它们之间的区别。请帮我解释一下。

最佳答案

C++ 使用 call by value默认情况下,可以使用 call by reference如果参数被正确装饰。 (指针参数传递指针的。)

如果您在下面更新的示例中指定了一个引用参数 (int& a),您的交换函数将起作用。

Call by value-result C++ 不支持;它的工作原理是在函数开始时传入值,并在函数结束时将值复制出来。

Call by name只是很奇怪。它不是传递值,而是传递评估变量(在调用范围内)的代码位(又名 thunk)。数组引用因未按预期使用按名称调用进行评估而臭名昭著。

void swap(int& a, int& b) {
int temp;
temp = a;
a = b;
b = temp;
}

关于c++ - 参数传递机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20689832/

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