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