简体   繁体   English

如何返回动态分配的数组?

[英]How do I return my dynamically allocated array?

So for my problem I need to have a dynamically allocated array that is to be created in the main function and populated in another function. 因此,对于我的问题,我需要有一个动态分配的数组,该数组将在主函数中创建并在另一个函数中填充。 The issue I'm having is that I then need to use that array in other functions and my array has no value after I populate it in my function (or at least this seems to be the case) Here is my code: 我遇到的问题是,然后我需要在其他函数中使用该数组,并且在我将其填充到函数中后,该数组没有任何值(或者至少是这种情况),这是我的代码:

#include <iostream>
#include <iomanip>
using namespace std;

//prototypes
int getNumber();
void getMovieData(int *ptrToArray, int arraySize);
void sort(int *ptrToArray, int arraySize);
double getAverage(int *ptrToArray, int arraySize);
void print(int *ptrToArray, int arraySize);

int main()
{
    int stuNum = 0;
    int* stuArray;
    stuArray = new int[stuNum];

    getMovieData(stuArray, stuNum);

    cout << "--- Here is the data you entered ---" << endl;
    print(stuArray, stuNum);

    sort(stuArray, stuNum);
    cout << "--- Here is the data you entered sorted ---" << endl;
    print(stuArray, stuNum);

    cout << fixed << setprecision(2);
    cout << "Here is the average of your survey" << getAverage(stuArray, stuNum) << endl;


    system("pause");
    return 0;
}

int getNumber()
{
    int userNum;
    cin >> userNum;
    while (userNum <= 0)
    {
        cout << "Error number must be greater than zero." << endl;
        cin >> userNum;
    }
    return userNum;
}

void getMovieData(int *ptrToArray, int arraySize)
{
    cout << "Enter the number of students being surveyed: ";
    arraySize = getNumber();
    for (int i = 0; i < arraySize; i++)
    {
        cout << "Enter the movies seen by Student " << i + 1 << ": ";
        ptrToArray[i] = getNumber();
    }
    return;
}

void sort(int *ptrToArray, int arraySize)
{
    for (int i = 0; i < arraySize; i++)
    {
        for (int j = 0; j < arraySize - 1; j++)
        {
            if (ptrToArray[j] > ptrToArray[j + 1])
            {
                int temp = ptrToArray[j];
                ptrToArray[j] = ptrToArray[j + 1];
                ptrToArray[j + 1] = temp;
            }
        }
    }
}

double getAverage(int *ptrToArray, int arraySize)
{
    int total = 0;
    for (int i = 0; i < arraySize; i++) { total = total + ptrToArray[i]; }
    return total;
}

void print(int *ptrToArray, int arraySize)
{
    for (int i = 0; i < arraySize; i++) { cout << ptrToArray[i] << "\t"; }
    cout << endl;
}

You are allocating an array with zero elements. 您正在分配一个零元素的数组。 Change the value of stuNum to a positive number representing the number ints you need. 将stuNum的值更改为一个代表您需要的数字整数的正数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM