2015-10-12 146 views
-3

要獲得c++數組中的位置,你可以做到以下幾點:獲取陣列地址的位置2D

class Slot 
{ 
public: 

    int Color; 
    std::string name; 
    /*.... more properties*/ 
}; 

int main() 
{ 
    Slot pix[60]; 

    Slot& randomSlot = pix[12]; 
    randomSlot.Color = 12; 
    randomSlot.name = "sdsd"; 

    Slot* addressOfSlot = &randomSlot; 
    Slot* arrayStart = pix; 

    //get the original pos 
    int x = addressOfSlot - arrayStart; 
} 
  1. 你會怎麼做才能得到2d array的x和y座標喜歡這個? :

    Slot pix[60][21]; 
    

我想是因爲我要成爲與指針/引用工作,我想有一個快速的方法來獲得原始位置時,使用這種方法,

  • 也可以在不安全的代碼或類似的東西在C#中做到這一點?
  • +0

    你會如何表示[30] [30]?你想獲得2D位置的1D位置嗎? – NathanOliver

    +0

    你是說給定一個值,你想在數組中找到它的標記嗎? –

    +0

    @NathanOliver以同樣的方式在其C#代表'字節[,] myArray',我敢肯定,是連續的內存在C#中,林要做到這一點在C#中,但C++是爲了說明問題的唯一途徑。 [內存中的二維數組](http://stackoverflow.com/questions/11575735/two-dimensional-array-in-memory) – elios264

    回答

    1

    可以從尺寸ROWS x COLS的2D陣列,以相同的尺寸和反之亦然的一維數組經由

    array2D[x][y] <-> array1D[x * COLS + y]; 
    

    其中COLS映射是列數。這使用的事實是,在C或C++中,數組存儲在技術上稱爲row-major order的內容中。 Fortran或MATLAB使用列主要順序,因此索引轉置。