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

时间:2018-01-07 16:37:16

标签: c++ arrays post-increment function-parameter

我正在查看这段代码并且除了一件事之外几乎完全了解它:
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;
}

3 个答案:

答案 0 :(得分:2)

作为函数参数传递的任何array被隐式转换/ 衰减到类型为var url = encodeURIComponent(window.location.href); 的{​​{3}}。现在int*是指向第一个数组元素的指针,即Arr1。这被称为pointer。应用Array-to-pointer decay

Arr1[0]

将指针值增加指向它指向的数据的大小,现在它指向第二个数组元素Arr1++;

话虽如此,你应该更喜欢post-increment operator到原始数组,而std::array更喜欢原始指针。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

看似具有数组类型的函数参数实际上具有指针类型。 int foo[3]int foo[]在函数参数列表的上下文中(在该上下文中仅 )与int* foo完全相同。因此,您可以为他们做一些您通常无法对数组做的事情,例如重新分配他们的值。