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
完全相同。因此,您可以对它们执行通常无法对数组执行的操作,例如重新分配它们的值。
我正在查看这段代码并且几乎理解了所有内容,除了一件事:
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
完全相同。因此,您可以对它们执行通常无法对数组执行的操作,例如重新分配它们的值。