【问题标题】:Can't figure out why I am getting bad out put from my reverse function无法弄清楚为什么我的反向功能会变得很糟糕
【发布时间】:2014-04-22 18:46:04
【问题描述】:

我创建了这个简单的程序来使用指针反转我的数组的顺序。我使用 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] << " " ;
}
}

【问题讨论】:

  • void main 应该是 int main
  • 您正在打印一个指针数组。因此,您将打印地址。您需要取消对地址的引用,或者只是将 incoming_Array 声明为整数数组。

标签: c++ arrays pointers function-pointers


【解决方案1】:
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] << " ";
    }
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多