#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int* randomNumbers(int min, int max, int size);
int main()
{
int min = 20;
int max = 100;
int size = 10;
int* nums;
nums = randomNumbers(min,max,size);
cout << "***************"<<endl;
for(int i = 0; i < size;i++)
{
cout << *(nums+i) << endl;
}
return 0;
}
int* randomNumbers(int min, int max, int size)
{
int* random = new int[size];
unsigned seed = time(0); //time elapsed since Jan 1, 1970
srand(seed);
for (int i = 0;i<size;i++)
{
*(random+i) = rand() % ((max+1)-min) + min;
cout<<*(random+i)<<" ";
}
cout<<endl;
delete[] random;
return random;
}
Так что, если я запускаю этот код в Xcode (Macbook), он отлично работает, однако если я запускаю это в CodeBlocks (Windows), первые два числа, напечатанные из основной функции, указаны в миллионах, но первые два числа, напечатанные из randomNumbers(), находятся в ожидаемом диапазоне. Я не понимаю, почему печать чисел в основной функции меняет первые два значения? Остальное в порядке. Я действительно нечурный, не стесняюсь задавать вопросы по моему вопросу.Возникли проблемы распечатывания первых два числа в динамически распределяемый массиве, остальные номера работают нормально
'удалить [] случайным образом; return random; 'Возможно, это неверно. – Borgleader
'a [i]' гораздо читабельнее (и меньше подвержено ошибкам), чем '* (a + i)'. – molbdnilo
Добро пожаловать в переполнение стека. Пожалуйста, найдите время, чтобы прочитать [The Tour] (http://stackoverflow.com/tour) и обратитесь к материалу из [Справочного центра] (http://stackoverflow.com/help/asking) о том, что и как вы можете спросите здесь. –