无法返回数组值

Qui*_*ite 2 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;
}
Run Code Online (Sandbox Code Playgroud)

doc*_*ove 5

这里有几个问题:

int generate(int *jeb[])
{
    int jeb [20] = {};
//...
}
Run Code Online (Sandbox Code Playgroud)

现在你有两件事叫做jeb.我们假设您只想要一个.您可以发送指针并填写它

int generate(int *jeb)
{
//.. fill it up in a for loop
}
Run Code Online (Sandbox Code Playgroud)

但这说它返回一个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
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个问题现在可能很明显:你正在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
}
Run Code Online (Sandbox Code Playgroud)