0

我有这段代码,它通过指针返回动态数组的地址..但是如何通过引用返回动态数组的地址?谢谢你..

int* e(int a[][2],int rows)
{
    int *p;

    p=new int[2];

    int max,min;

    max=min=a[0][0];

    int i,j;
    for(i=0;i<rows;i++)
    {
        for(j=0;j<2;j++)
        {
            if(min>a[i][j])
                min=a[i][j];
            else if(max<a[i][j])
                max=a[i][j];
            else;
        }
    }

    p[0]=min;
    p[1]=max;
    delete []p;
    return p;
}
4

1 回答 1

3

在这种情况下,“通过引用返回(ing)动态数组的地址”将归结为p通过引用返回,但p它是一个局部变量,所以当函数退出时内存会被释放,所以这不起作用。

如果你真的想要,这应该可以工作:(但我强烈怀疑这是你应该做的,并且可能会导致内存泄漏)

int* &e(int a[][2],int rows)
{
  int **p = new int*;
  *p = new int[2];
  ...
  return *p;
}

请注意,这没有意义:

delete []p;
return p;

您正在释放内存,然后返回指向它的指针。

只需删除删除,一切都应该没问题(或至少接近正常)。

于 2013-02-26T16:02:57.030 回答