从函数返回指针给出了奇怪的数字

时间:2013-04-18 18:24:59

标签: c++ function pointers return function-pointers

我试图获得这个数字的最大数量,该数字的数字从-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;

是否因为函数返回后函数中的指针被销毁,并在该内存位置给出一个随机数。如果是这样的话,它需要被解除引用但是如何?

2 个答案:

答案 0 :(得分:7)

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

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

应改为

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

答案 1 :(得分:1)

ptomx中的for循环超出了界限。

想一想: 如果你想要每一个值,但没有超出最后一个值,你想使用&gt; =? 如果你有10个值,它们在内存中的实际位置(理论上)是0-9。你应该只使用&gt;为了弥补这一点。

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

这应该是它的样子。