显示用户创建的数组c ++

时间:2015-09-17 13:05:45

标签: c++ arrays

好吧所以这可能是一个非常简单的问题,我对c ++很陌生,并且正在努力理解大多数事情。我被要求创建一个存储随机数的数组,但用户要定义数组的大小。然后我必须显示数组中的所有数字。我正在努力的是显示阵列的所有元素。目前,我很确定我的阵列部分已经关闭,但我似乎只能显示一个数字。到目前为止,这是我的代码:

#include <iostream>
#include <cstdlib>
#include <stdlib.h>
#include <ctime>

using namespace std;
using std::srand;
using std::rand;
using std::time;

void Display(int *, int);

int main(void)
{
    int userSize;
    cout << "Please enter the size of the array: ";
    cin >> userSize;

    int* randArray = new int[userSize];

    srand(time(NULL));

        for (int i = 0; i < userSize; i++) {
        randArray[i] = rand() % 20 + 1;
        }

        //Disregard the next few lines, I was just testing to see if anything was actually in the array. 
        /*cout << randArray[0] << endl;
          cout << randArray[1] << endl;
          cout << randArray[2] << endl;
          cout << randArray[19] << endl;*/

    Display(randArray, sizeof(randArray) / sizeof(int));
    return 0;

    delete[] randArray;
}

void Display(int *arrayData, int numElements)
{
    for (int counter = 0; counter < numElements; counter++)
    {
    std::cout << *(arrayData + counter) << std::endl;
    }
    return;
}

我还应该提一下,老师在删除数组的行之后向我们提供了代码。

这是我必须回答的问题:询问用户要存储在数组中的元素数量。然后,您应该动态分配内存来保存此数组,这将继续以与上一个任务相同的方式使用(使用随机数据填充数组,将数据显示到 屏幕)。

2 个答案:

答案 0 :(得分:2)

问题是sizeof。它给出了参数的类型的大小,而不是后面的大小。您应该将userSize传递给Display()

您还应delete之前return数组。 return后面的代码永远不会被执行。

答案 1 :(得分:2)

sizeof(randArray)不会告诉您已分配的字节数。相反,它告诉你指针的大小,在你的系统上恰好与整数的大小相同,所以sizeof(randArray) / sizeof(int)总是返回1。而是在userSize的函数调用中使用Display作为第二个参数。

此外,您delete[] randArray之后的return 0。这是不正确的; return 0执行后没有任何内容。你想要它在上面。

此外,请考虑使用std::vector(除非您需要使用原始指针进行此分配)