动态数组的地址

时间:2013-02-26 15:56:31

标签: c++

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

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;
}

1 个答案:

答案 0 :(得分:3)

“通过引用返回动态数组的地址”在这种情况下将归结为通过引用返回p,但p是一个局部变量,因此内存将被释放当函数退出时,这样就无法工作了。

如果你真的想要,这应该有效:(但我强烈怀疑这是你应该做的,并且可能会导致记忆泄漏)

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

请注意,这没有意义:

delete []p;
return p;

你释放内存,然后返回指针。

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