簡體   English   中英

無法返回數組值

[英]Trouble returning an array value

我不斷收到錯誤代碼,說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;
}

這里有幾個問題:

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

現在您有兩件事叫jeb 假設您只想要一個。 您可以發送一個指針並填充它

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

但是這說它返回一個整數...

代替使用指針,請嘗試使用數組-您似乎事先知道您有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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM