无法弄清楚为什么我的反向功能会变坏

时间:2014-04-22 18:46:05

标签: c++ arrays pointers function-pointers

我创建了这个简单的程序来使用指针反转数组的顺序。我使用JAVA创建了相同类型的程序,但我觉得指针给我一个问题。

错误说明:

我的错误来自我的反向功能。它似乎正在输出内存地址,而不是反向给出整数。例如,0x003456,0xx45268,.......;而不是输出我放在第一个数组中的实际数字。现在我非常肯定我的指针是导致这种混淆的原因,我只是无法准确指出我的错误所在。如果有人能带领我朝着正确的方向前进,我将非常感激。

代码:

#include <iostream>
#include <iomanip>

using namespace std;

void reverseArray(int *[], int);
void firstArrayValue( int [], int);

void main ()
{
  const int SIZE = 10;
  int firstArray [SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int *arrayPointer[SIZE];

  for ( int x = 0; x < SIZE ; x++)
  {
   arrayPointer[x] = &firstArray[x];
  }

   cout << "The Values In Your First Array Is the Following : \n \n" ;
   firstArrayValue(firstArray, SIZE);
   reverseArray(arrayPointer, SIZE);
   system("pause");
  }
void reverseArray(int *incoming_Array[], int size)
{
int *temp;
for (int i = 0; i < size/2; ++i) 
{
    temp = incoming_Array [size-i-1];
    incoming_Array [size-i-1] = incoming_Array [i];
    incoming_Array [i] = temp;
}

for (int i = 0; i < size; ++i) 
{
    cout << incoming_Array [i] << " ";
}

system("pause");
}

void firstArrayValue( int num[], int size)
{
for (int x = 0; x < size; x++)
{
    cout << num [x] << " " ;
}
}

2 个答案:

答案 0 :(得分:0)

正如你提到的问题中提到的评论,你需要尊重数组中的指针来获得实际值。将您的print行更改为以下内容,以明确尊重。

cout << *(incoming_Array [i]) << " ";

答案 1 :(得分:0)

void reverseArray(int incoming_Array[], int size) //instead of int *incoming_Array[]
{
    int *temp;
    for (int i = 0; i < size/2; ++i) 
    {
        temp = incoming_Array [size-i-1];
        incoming_Array [size-i-1] = incoming_Array [i];
        incoming_Array [i] = temp;
    }
    for (int i = 0; i < size; ++i) 
    {
        cout << incoming_Array [i] << " ";
    }
}