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

1

ptomx 内の for ループが限界を超えています。

考えてみてください: すべての単一の値が必要で、最後の値以外は何も必要ない場合、>= を使用しますか? 10 個の値がある場合、メモリ内の実際の位置は (理論的には) 0 ~ 9 です。これを補うためにのみ > を使用する必要があります。

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

これは、次のようになります。

于 2013-04-18T18:31:56.423 に答える