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

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

本文关键字:int 是什么 意思 arr 函数 arr++      更新时间:2023-10-16

我正在查看这段代码,除了一件事之外,几乎理解了所有代码:
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;
}

任何作为函数参数传递的数组都会隐式转换/衰减为类型 int* 的指针。现在Arr1是一个指向第一个数组元素的指针,即 Arr1[0] 。这称为数组到指针衰减。应用后增量运算符:

Arr1++;

指针值递增它指向的数据大小,因此现在它指向第二个数组元素Arr1[1]

话虽如此,您应该更喜欢 std::array 而不是原始数组,更喜欢智能指针而不是原始指针。

所以你需要知道的是 Arr ,在这种情况下,是指向数组的指针。因此,当您执行Arr++时,基本上是递增指向此数组的指针。

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