c++类函数中怎么返回和使用二维数组

2024年11月22日 08:21
有3个网友回答
网友(1):

不要把二维数组与二维指针混淆在一起,他们是不同的意义的。
指针是指针变量的简称,它可以存储“数据”的地址。
无论是几维的数组,数组名只不过是一个地址的代号,好比是一个楼的楼号(相当于地址),它不能被改变,可以赋给任何类型的指针变量(因为指针变量中存的是地址,在一个计算机中,地址所占的空间是一样的,所以,可以随意赋值),但根据指针变量的类型的不同,在引用时会有不同的结果表现,用不好就会“死掉”。
尽量不要使用局部变量的返回引用,这样不可靠。如你的例子:当a函数结束后,原则上b所处的位置的数据系统就不保证了,如果有别的程序用,你的b空间里的数据就可能被覆盖了。如果非要用,建议这样:int *a(){static int b[2]={1,2}; return b;}
如果你返回的二维数组是一个固定大小的,那么,就在调用者程序中,建立数组,通过参数传递过去进行赋值

网友(2):

#include
using namespace std;

class Foo
{
public:
Foo();
~Foo();
int **Test2DArray(unsigned r, unsigned c);
private:

};

Foo::Foo()
{
}

Foo::~Foo()
{
}
// 返回指向二维数组的指针函数
int ** Foo::Test2DArray(unsigned r, unsigned c){
int ** arr2d = 0;
arr2d = new int*[r];
for (int i = 0; i < r; i++)
{
arr2d[i] = new int[c];
for (int j = 0; j < c; j++)
{
arr2d[i][j] = j + c*i;

}
}

return arr2d;
}
int main(){

Foo *foo = new Foo();
int **arr2d = foo->Test2DArray(3, 4);

for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
cout << arr2d[i][j] << " ";

}
cout << endl;
}

// 释放内存
for (int i = 0; i < 3; i++)
{
delete[] arr2d[i];
}

delete[] arr2d;
delete foo;

return 0;
}

网友(3):

c++中函数不能直接返回二维数组,但可以返回函数指针
http://bbs.csdn.net/topics/360158391