首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数传递机制?

参数传递机制?
EN

Stack Overflow用户
提问于 2013-12-19 19:12:52
回答 1查看 2.4K关注 0票数 2

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

我在C++上有一个程序:

代码语言:javascript
复制
#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,我不知道它们之间的区别。请帮我解释一下。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 19:26:16

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

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

按值调用-结果不受C++支持;它的工作方式是在函数开始时传递值,并在函数末尾复制值。

点名就是怪怪的。它不是传递值,而是传递一些代码(也称为块)来计算变量(在调用范围内)。数组引用是臭名昭著的,因为没有像人们期望的那样使用名称调用来进行计算。

代码语言:javascript
复制
void swap(int& a, int& b) {
   int temp;
   temp = a;
   a = b;
   b = temp;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20689832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档