-2

我写了这段代码,其中一部分不是我写的,我无法理解函数是如何更新我的arrayData

#include <iostream>
using namespace std;

int *insert(int arr[], int size, int elem, int pos);

int main()
{
    // Create a array
    int arrayData[50] = {0};

    // Insert data
    for (int i = 0; i < 10; i++)
    {
        arrayData[i] = i + 1;
    }

    int elem = 40, pos = 5, size = 10;

    // insert the element
    insert(arrayData, size, elem, pos);

    // show the data
    for (int i = 0; i < size + 1; i++)
    {
        cout << arrayData[i] << " ";
    }

    return 0;
}

int *insert(int arr[], int size, int elem, int pos)
{
    size++;

    // shift elements forward
    for (int i = size; i >= pos; i--)
        arr[i] = arr[i - 1];

    // insert x at pos
    arr[pos - 1] = elem;

    return arr;
}

输出: 1 2 3 4 40 5 6 7 8 9 10

4

1 回答 1

2

它正在更新它,因为您为函数提供了数组 ( int arr[]) 的内存地址,因此数组不会像其他变量一样复制到函数中。

于 2020-01-11T14:09:11.540 回答