1

我正在尝试获取该数组的最大数量,该数组的数字从 -20 到 30,但它返回像这样的奇怪数字 --> 2255667,如果一切顺利,这是不可能的。

int * ptomx(int a[],int n)
{
  int max=-100;
  int *point;

  for(int i=0;i<=n;i++)
  {
      if(max<a[i])
      {
        max = a[i];
      }
  }
  point = new int;
 *point = max;
  return point;
}

这就是我在 main() 中所做的

int maxTemp;

maxTemp=*(ptomx(a,n));

cout<<"Max temp is:"<<maxTemp;

是不是因为函数中的指针在函数返回后被销毁,并在该内存位置给出了一个随机数。如果是这种情况,它需要被取消引用,但如何?

4

2 回答 2

7

您正在从数组末尾读取值。这些值可以是任何值,并且是导致错误结果的原因。

 for(int i=0;i<=n;i++) 
              //^^

应改为

 for(int i=0;i < n;i++) 
于 2013-04-18T18:25:25.940 回答
1

您在 ptomx 中的 for 循环已超出范围。

想一想:如果你想要每一个值,但除了最后一个之外什么都没有,你想使用 >= 吗?如果你有 10 个值,它们在内存中的实际位置(理论上)是 0-9。您应该只使用 > 来弥补这一点。

for(int i=0;i<n;i++) 

这就是它应该的样子。

于 2013-04-18T18:31:56.423 回答