2010-11-13 62 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