我有这个代码通过指针返回动态数组的地址..但是如何通过引用返回动态数组的地址?谢谢..
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;
}
答案 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;
你释放内存,然后返回指针。
只需删除删除,一切都应该没问题(或者至少接近罚款)。