无法返回数组值

时间:2017-09-21 10:52:00

标签: c++ arrays

我一直收到一条错误代码,说jeb已重新定义,并且将int更改为floatdouble不起作用。这是一个随机数生成器,我的阵列搞乱了。

#include "stdafx.h"
#include <iostream>
#include <random>

using std::cout;
using std::endl;
using std::cin;

int generate();
int numb();

int main()
{
    int num = numb();
    cout << num << endl;
    cout << endl;

    int gen = generate();
    cout << gen << endl;
    cout << endl;
    system("Pause");
    return 0;
}

int generate(float *jeb[])
{
    int jeb [20] = {};
    for (int i = 0; i < 20; i++) {
        int rng = rand() % numb() + 1;
        jeb[i] = rng;
        return jeb;
    }
}

int numb()
{
    int choice;
    cout << "Enter maximum number: ";
    cin >> choice;
    return choice;
}

1 个答案:

答案 0 :(得分:5)

这里有几个问题:

int generate(int *jeb[])
{
    int jeb [20] = {};
//...
}

现在你有两件名为jeb的东西。 让我们假设您只想要一个。 您可以发送指针并填写

int generate(int *jeb)
{
//.. fill it up in a for loop
}

但这表示它返回一个int ...

而不是指针,尝试使用数组 - 您似乎事先知道您有20个元素:

#include <array>

std::array<int, 20> generate()
{
    std::array<int, 20> jeb;
    for (int i = 0; i < 20; i++) {
        int rng = rand() % numb() + 1;
        jeb[i] = rng;
        return jeb; //Really, wait - we haven't done the whole loop yet
    }
}

另一个问题现在可能很明显:你正在for循环中间返回。等到你完成了你需要的东西。

std::array<int, 20> generate()
{
    std::array<int, 20> jeb;
    for (int i = 0; i < 20; i++) {
        int rng = rand() % numb() + 1;
        jeb[i] = rng;
    }
    return jeb; // loop now done
}