无法打印出动态分配数组中的前两个数字,其他数字工作正常
Having trouble printing out the first two numbers in a dynamically allocated array, the other numbers work fine
#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) 中使用此代码,第一个从 main 函数打印的两个数字以百万计,但从 randomNumbers() 打印的前两个数字在预期范围内。我不明白为什么在 main 函数中打印数字会改变前两个值?其余的都很好。我真的口齿不清,欢迎大家针对我的问题提问
delete[] random;
return random;
您正在删除阵列!
删除数组后对数组的任何访问都是未定义的。完成后清理数组。
将删除移至此处:
for(int i = 0; i < size;i++)
{
cout << *(nums+i) << endl;
}
delete[] nums;
return 0;
#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) 中使用此代码,第一个从 main 函数打印的两个数字以百万计,但从 randomNumbers() 打印的前两个数字在预期范围内。我不明白为什么在 main 函数中打印数字会改变前两个值?其余的都很好。我真的口齿不清,欢迎大家针对我的问题提问
delete[] random;
return random;
您正在删除阵列!
删除数组后对数组的任何访问都是未定义的。完成后清理数组。
将删除移至此处:
for(int i = 0; i < size;i++)
{
cout << *(nums+i) << endl;
}
delete[] nums;
return 0;