私は C++ を初めて使用するので、この問題について助けていただければ幸いです。例をグーグルで検索してみましたが、探しているものがまったく見つからないようです。int 配列にスペースを割り当てるメイン関数と、そのスペースに乱数配列を設定するヘルパー関数(getRandomNumberArray) があります。
ヘルパー関数で作成された配列を印刷し、メイン関数で割り当てられたメモリに転送した後です。そして、私は不可解に多くの価値を失います。
以下のコードはこれを出力します。
95 70 24 40 26 7 84 45 62 13 41 11 21 55 23 50 17 8 76 20 94 25 90 29 95 26 9 44 47 8 61 27 42 10 15 26 53 64 55 90 79 8 6 72 84 33 29 4 65 56 65 12 30 14 59 25 42 69 99 47 2 42 25 80 90 32 51 17 14 74 83 94 34 92 88 51 85 78 71 9 38 54 17 34 19 47 4 84 89 81
95 70 24 40 26 7 84 45 62 13 41 11 21 55 23 50 17 8 76 20 94 25 90 29 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ご覧のとおり、ある時点までは値が設定されていますが、その後はすべてゼロになっています。ここで何が起こっているのか、どうすれば修正できるのでしょうか?
ありがとう!
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void getRandomNumberArray(int *result, int size){
srand(time(0));
int randomNos[100] = {0};
for(int i = 0; i < 100; i++){
randomNos[i] = rand() % 100 + 1;
cout << randomNos[i] << ' ';
}
memcpy(result, randomNos,size);
}
int main() {
int size = 100;
int *randomNumbers = new int[size];
getRandomNumberArray(randomNumbers,size);
cout << "" << endl;
for(int i = 0; i < 100; i++){
cout << randomNumbers[i] << ' ';
}
free(randomNumbers);
return 0;
}