所以我对指针和指针语法都很陌生,我刚刚写了这个函数,但是有大约5-6个构建错误,看了一会儿代码后,我仍然不确定如何解决他们或他们为什么是错误。我是指针和内存的新手,所以我不确定如何修复这些错误以及它们为什么是错误的。感谢您的帮助,非常感谢!
int makeFrequency (int data[], int dSize, int *minDataValue, int *maxDataValue)
{
findMinAndMax(data, dSize, minDataValue, maxDataValue);
int fSize = *minDataValue + *maxDataValue; // invalid operands of types 'int' and 'int*' to binary 'operator+' error?
int frequency = new int [fSize]; //invalid conversion error?
if (frequency == NULL)
{
return NULL;
}
for (int i = 0; i <= fSize; i++)
{
frequency[i] = 0; // invalid types 'int[int]' for array subscript error?
}
for (int i = 0; i <= dSize; i++)
{
int j = data[i] - (*minDataValue)+1; // invalid operands of types 'int' and 'int*' to binary 'operator-' error?
frequency[j] = frequency[j] + 1; // invalid types 'int[int]' for array subscript error?
}
return frequency;
}
int main() {
int dSize;
int *ArrayOfInts;
cout << "How many data values? ";
cin >> dSize;
ArrayOfInts = new int [dSize];
getData(dSize, ArrayOfInts);
int *frequency, min, max;
frequency = makeFrequency (ArrayOfInts, dSize, &min, &max); // invalid conversion error?
if (frequency == NULL) return -1;
makeHistogram(frequency, min, max);
delete [] frequency;
return 0;
}
答案 0 :(得分:0)
int frequency = new int [fSize]; //invalid conversion error?
new
返回指向堆分配对象的指针。当您分配X
时,new
会返回X *
。
new X[n]
分配n
X
个实例,并返回指向X的第一个实例的指针。
(在所有情况下,new
也会调用已分配的对象&#39;构造函数,但这是一个无关紧要的点。)
new int [fSize];
因此,此表达式返回int *
。
int frequency
frequency
显然是int
。
int frequency = new int [fSize];
将上述所有内容放在一起,您在此处尝试将int *
分配给int
。这是您的转化错误。 frequency
应声明为int *
。