繁体   English   中英

为什么在其他错误中出现从“ int”到“ int *”错误的无效转换?

[英]Why am I getting the Invalid conversion from 'int' to 'int*' error among other errors?

因此,我对指针和指针语法非常陌生,我刚刚编写了此函数,但是有大约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;
}
int frequency = new int [fSize]; //invalid conversion error?

new返回指向堆分配对象的指针。 当您分配Xnew返回一个X *

new X[n]分配nX实例,并返回一个指向X的第一个实例的指针。

(在所有情况下, new也会调用分配的对象的构造函数,但这在这里是无关紧要的)。

new int [fSize];

因此,此表达式返回一个int *

int frequency

frequency显然是一个int

int frequency = new int [fSize];

将以上所有内容放在一起,此处您尝试将int *分配给int 那就是你的转换错误。 frequency应声明为int *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM