arr++在函数"int f(int arr[])"中是什么意思?

What does arr++ mean in a function "int f(int arr[])"?

我正在查看这段代码并且几乎理解了所有内容,除了一件事:
Arr1++ 是什么意思?

它对数组有什么作用?因为 Arr1 不仅仅是像 int..

这样的普通变量
bool theSameElements(int Arr1[], int Arr2[], int size)
{
    int temp;
    if (size == 0)
    {
        return true;
    }
    for (int i = 0; i < size; i++)
    {
        if (Arr1[0] == Arr2[i])
        {
            temp = Arr2[i];
            Arr2[i] = Arr2[0];
            Arr2[0] = temp;
            Arr1++;
            Arr2++;
            return theSameElements(Arr1, Arr2, size - 1);
        }
    }
    return false;
}

所以你需要知道的是Arr,在这个例子中,是指向数组的指针。因此,当您执行 Arr++ 时,您基本上是在递增指向该数组的指针。

任何array passed as function parameter is implicitly converted / decays to a pointer of type int*. Now the Arr1 is a pointer pointing to the first array element namely Arr1[0]. This is known as the Array-to-pointer decay. Applying the post-increment operator

Arr1++;

增加 指针值增加它指向的数据的大小,所以现在它指向第二个数组元素Arr1[1].

也就是说你应该 std::array to raw arrays and smart pointers 而不是原始指针。

看似数组类型的函数参数,实际上是指针类型。 int foo[3]int foo[],在函数参数列表的上下文中(以及 only 在该上下文中)与 int* foo 完全相同。因此,您可以对它们执行通常无法对数组执行的操作,例如重新分配它们的值。