如何使用数组地址反转数组?

How to use array address to reverse an array?

我理解数组地址,但是我在一本书中找到的这段代码让我nut.I也理解了递归函数,但没有得到这个one.Here是代码:

int main(){
  const int arraySize = 5;
  int a[arraySize] = { 32, 27, 64, 18, 95};

  cout << "The values in reverse  array are:" << endl;
  someFunction(a, arraySize);
  cout << endl;
  cin.get();
  return 0;
}

void someFunction(int b[], int size)
{
  if (size > 0) {
     someFunction(&b[1], size - 1);
     cout << b[0] << " ";

  }
}

我在 exercise.My 问题中得到这段代码是如何反转数组的?如果有人解释一下我会很高兴 more.thanks

b[1] 是数组的第二个元素。 &b[1]是第二个元素的地址,所以和原来的数组一样,只是小了1,跳过了第一个元素。

如果在打印第一个元素之前先打印出除第一个元素之外的所有内容,并递归执行,结果是以相反的顺序打印出来。

注意实际的数组并没有反转。它只会以相反的顺序打印。这是无稽之谈。一个循环更好。

下面是一些伪代码,显示了如何对 someFunction 进行递归调用,以及调用顺序:

someFunction( { 32, 27, 64, 18, 95} , 5)
someFunction( { 27, 64, 18, 95}, 4)
someFunction( { 64, 18, 95}, 3)
someFunction( { 18, 95}, 2)
someFunction( { 95}, 1)
someFunction( { }, 0)

someFunction({ }, 0) 将 return 不执行任何操作,因为数组中没有任何内容。现在 someFunction 将打印数组的第一个元素 b[0] 因为它来自递归,从仅包含一项的数组开始 {95}:

{ 95 }
{ 18, 95}
{ 64, 18, 95}
{ 27, 64, 18, 95}
{ 32, 27, 64, 18, 95}

所以你的输出将是:

"The values in reverse  array are:"
95 18 64 27 32