关于c ++:通过引用传递并通过值传递


Passed by reference and passed by value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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和下面的方法吗?

  • 参数x由值传递。
  • 参数x是通过引用传递的。
  • 参数x由值结果传递。

  • 您的困惑是因为数组不存在于函数参数列表中。

    详细说明:

    1
    2
    3
    4
    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)

    实际上是相同的功能。

    也:

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

    这些C样式数组的混淆语义是创建std::array的原因。

    回答你的问题:

    百万千克1不能按值传递C数组。百万千克1百万千克1可以通过引用传递c-array(void fun(int (&arr)[3])是一个按引用接受三元素数组的函数)百万千克1百万千克1C++中没有传递值的结果。百万千克1

    有关数组的详细信息,请检查此堆栈溢出问题