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

Ale*_*dis 1 c++ pointers return function-pointers function

我试图得到这个数组的最大数量,其数字从-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;
}
Run Code Online (Sandbox Code Playgroud)

这是我在main()做的事情

int maxTemp;

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

cout<<"Max temp is:"<<maxTemp;
Run Code Online (Sandbox Code Playgroud)

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

tao*_*ocp 7

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

 for(int i=0;i<=n;i++) 
              //^^
Run Code Online (Sandbox Code Playgroud)

应该改为

 for(int i=0;i < n;i++) 
Run Code Online (Sandbox Code Playgroud)