动态数组地址

address of dynamic array

本文关键字:组地址 数组 动态      更新时间:2023-10-16

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

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

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

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

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

请注意,这是没有意义的:

delete []p;
return p;

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

只要删除删除,一切都应该很好(或至少接近良好)。