在这个程序中,我被要求使用存储在file.txt中的一定数量的值。
我有一个类,它有一个名为Absolute_frequency的公共函数,它返回一个指向在名为abs_freq []的函数中创建的数组的指针。我的问题是我现在需要将这个数组保存到我主要的另一个数组中。
int *Data::Absolute_frequency() {
/*Here I created 2 arrays that store values representing max and min limit
of certain intervals (eg. 0 to 20, 21 to 40, 41 to 60, etc...)
And then I run my code thru each of these intervals and count how many
values are in them, and store it in abs_freq[]:*/
int *abs_freq=new int [num_intervals]();
for (int j = 0; j < num_values; j++)
{
for (int i = 0; i < num_intervals; i++)
{
if (values[j] >= intervals_min[i] && values[j]<=intervals_max[i])
{
abs_freq[i]++;
}
}
}
return abs_freq;
}
根据我的测试,数组abs_freq [i]存储的是什么,现在我的问题是我需要将这个数组传递给我的main()。我试过这样的东西,但正如我所料,它只传递了abs_freq的第一个值:
int main(){
Data data;
int *absolute_freq = new int[num_intervals]();
...
for (int i = 0; i < num_intervals; i++)
{
absolute_freq[i] = *data.Absolute_frequency();
}
for (int i = 0; i < num_intervals; i++)
{
printf("Absolute frequency interval %d: %d \n", i+1,absolute_freq[i]);
}
....
}
如何存储整个数组而不仅仅存储第一个值?
答案 0 :(得分:3)
您可以通过在main
函数中使用指针变量来执行此操作,并使用函数返回的指针对其进行初始化:
int* absolute_freq = data.Absolute_frequency();
请记住,一旦您完成了数组,您必须delete[]
。
答案 1 :(得分:0)
在您的代码for (int i = 0; i < num_intervals; i++) { absolute_freq[i] = *data.Absolute_frequency() ...
中,您一次又一次地调用函数Absolute_frequency
,每次创建一个新的整数数组(您不会自由)。此外,*data.Absolute_frequency()
相当于data.Absolute_frequency()[0]
,即它始终为您提供数组中的第一个条目。
不确定你实际需要达到的目的;但我想以下代码会更好:
int *absolute_freq = data.Absolute_frequency();
for (int i = 0; i < num_intervals; i++)
{
printf("Absolute frequency interval %d: %d \n", i+1,absolute_freq[i]);
}
delete[] absolute_freq;