通过引用传递并通过值传递

时间:2014-07-02 16:54:59

标签: c++

#include <iostream>

using namespace std;

void main()
{
    int x[3] = {5,2,4}:
    swap(x,1,2);
}

void swap(int[] list, int i, int j)
{
    int temp = list[i];
    list[i] = list[j];
    list[j]= temp;
}

我试图找出这意味着什么,我得到了传递的价值。但是我对指针和价值结果不太熟悉?有人会解释或指出一个处理C和下面方法的例子吗?

  1. 参数x按值传递。
  2. 参数x通过引用传递。
  3. 参数x由value-result传递。

2 个答案:

答案 0 :(得分:1)

您的困惑是由于函数参数列表中不存在数组这一事实造成的。

详细说明:

void swap(int list[25], int i, int j)
void swap(int list[5], int i, int j)
void swap(int list[], int i, int j)
void swap(int* list, int i, int j)

实际上是相同的功能

此外:

int arr[30];
int* ptr = arr; // does the same as int* ptr = &arr[0]

C风格数组的这些令人困惑的语义是创建std::array的原因。

回答你的问题:

  1. 您无法按值传递C数组。
  2. 您可以通过引用传递C数组(void fun(int (&arr)[3])是一个通过引用获取三元素数组的函数)
  3. C ++中没有通过value-result传递。
  4. Check this Stack Overflow question for more details about arrays

答案 1 :(得分:0)

[您应该在代码块上尝试使用此代码。我已经在注释行中解释了所有参数,以便更好地理解。] [1]

enter code here

https://ideone.com/17oQZV