参数传递机制

Parameter passing mechanisms?

本文关键字:机制 参数传递      更新时间:2023-10-16

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

我有一个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;
}

这是呼叫交换后的解决方案:https://i.stack.imgur.com/w46SM.jpg我不知道它们之间的区别。请帮我解释一下。

C++默认使用按值调用,如果参数修饰正确,则可以使用按引用调用。 (指针参数传递指针的值

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

C++不支持按值结果调用;它的工作原理是在函数开始时传入值并在函数末尾复制值。

直呼其名就很奇怪了。 它不是传递值,而是传递评估变量的代码位(也称为 thunks)(在调用范围内)。 数组引用因没有像人们期望的那样使用按名称调用进行评估而臭名昭著。

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