动态分配一个新的整数数组

Struggling with dynamically allocate a new integer array

本文关键字:整数 数组 一个 动态分配      更新时间:2023-10-16

我需要将数组传递给一个函数。在函数内,动态分配一个新的整数数组。按照程序语法将原数组中的值以相反的顺序赋值给新数组,这样原数组中的第一个条目将成为新数组中的第五个条目,原数组中的第二个条目将成为新数组中的第四个条目,依此类推。在函数中显示新数组的内容。不要从函数返回新的数组。不要改变原数组的内容。在赋值和显示新数组的内容时,使用指向数组的指针,即使用解引用。动态分配的数组将被删除。

下面是我现在得到的框架工作,但我被难住了,不知道如何进行。

第一个按顺序显示数组,它们在数组中,但我正在努力如何将其传递给另一个函数,然后按反向顺序显示。我想我一度很接近了,但是我越是搞混,我觉得我实际上让事情变得更糟,离我想要完成的目标越来越远。

#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 :| 
}

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

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;
}