挣扎着动态分配一个新的整数数组

时间:2016-09-27 03:54:57

标签: c++

我需要将数组传递给函数。在函数内,动态分配一个新的整数数组。以逻辑方式将原始数组中的值以相反的顺序分配给新数组,使原始数组中的第一个条目成为新数组中的第五个条目,原始数组中的第二个条目成为新数组中的第四个条目, 等等。在函数中显示新数组的内容。不要从函数返回新数组。不要更改原始数组的内容。在分配和显示新数组的内容时,使用指向数组的指针,即使用解除引用。动态分配的数组将被删除。

下面是我现在要做的一些框架工作,但是我很难过并且不确定如何继续。

第一个按顺序显示数组,但是我正在努力将它传递给另一个函数,然后按逆序显示。我觉得我一度接近,但是我越是混乱,我觉得我实际上做得更糟,远离了我想要完成的事情。

#include "stdafx.h"
#include <iostream>
using namespace std;

void dispArr(int *, int);
void dispArrRev(int *, int);

void main()
{

    int arrA[5] = { 100, 200, 300, 400, 500 };

    dispArr(arrA, 5);
    dispArrRev(arrA, 5);


    system("pause");
    return;
}

void dispArr(int *val, int size)
{
    for (int x = 0; x < size; x++)
    {
        cout << x << " = " << *(val + x) << endl;
    }
    cout << endl;
    return;
}

void dispArrRev(int *val, int size)  //call by pointer
{
    //Stare at white space until light bulb appears :S :| 
}

1 个答案:

答案 0 :(得分:0)

只是一个建议,您可以按原样存储,但以相反的顺序表示,例如:

void dispArrRev(int *val, int size)
{
    for (int x = size-1; x >0; x--)
    {
        cout << x << " = " << *(val + x) << endl;
    }
    cout << endl;
    return;
}

如果你必须在函数内部分配和释放一个数组,那么你的代码应该是(注意我没有添加代码来检查是否已经分配了new_array):

void dispArrRev(int *val, int size)
{
    int *new_array=new int[size];
    for (int x = size-1; x >0; x--)
    {
        new_array[size-x-1]=*(val + x);
    }
    dispArr(new_array,size);
    delete [] new_array;
    return;
}