2010-11-13 63 views

回答

-1

你必须把它作为回报return **arr

+0

如果你只有一个指针,仅此而已,你不能代表一个二维数组 – 2010-11-13 10:46:19

+0

我已为**改编自*改编,现在可以吗? – Codeanu 2010-11-13 11:04:56

1

使用std::vector <std::vector<T> >,而不是用C风格的数组。

例如:

typedef std::vector<std::vector <int> > VVector; 

VVector func() 
{ 
    VVector abc; 
    //push_back and stuffs 
    return abc; 
} 
+0

什么是Wector,它为什么看起来很熟悉? – 2010-11-13 10:40:29

+2

@Roger:它是一个矢量矢量,所以'VVector'。它的两个'V'''不是'W'。 ;-)我不知道这是一个骗局。投票结束。 – 2010-11-13 10:41:45

-4

使用STL载体或其它STL容器是做它的一种方式。

另一种方法是将返回一个指针的指针,因为二维“数组”无非是那么一个指向指针,以便在实践中它看起来像这样

int **func_return() 
{ 
    int **ppArray = NULL; 
    ....do stuff here.... 

    return ppArray; 
} 

注:99 %的情况下,你必须知道数组有多大,所以你还必须返回数组的实际大小。为了这个目的,你可以使用函数的参数,例如

int **func_return(std::size_t &xsize, std::size_t &ysize) 
{ 
     int **ppArray = NULL; 
     ....do stuff here.... 

     return ppArray; 
    } 
2
struct MyArray 
{ 
    int arr[8][8]; 
}; 

MyArray getMyArray() { 
    MyArray arr = {}; 
    // ... 
    return arr; 
}; 
+0

不错,但我会在结构中添加2个其他变量来保存二维数组的x和y大小 – 2010-11-13 10:49:43