2016-01-05 39 views
0

我面臨的一個問題,當我嘗試訪問陣列的陣列的指針,我已聲明爲以下幾個陣列:如何訪問不同大小的數組的字節數組?

BYTE a[5] = {0xcc,0xaa,0xbb,0xcc,0xff}; 
BYTE b[3] = {0xaa,0xbb,0xff}; 

茨艾倫字節數組表示,我想從DLL中的內存加載圖像,我可以毫無困難地分別訪問他們,但我想從一個指針的循環訪問他們...

我試圖把它們放到數組的數組是這樣的:

BYTE* c[2] = {a,b}; 

但當我想循環這個指針c [i]在i索引處向我的內存加載圖像,我怎麼能修復它?

我嘗試一個循環內畫用這種方法的圖像,以避免repating線(考慮c是圖像[1])

void MenuIcon::drawIcons(LPDIRECT3DDEVICE9 npDevice) 
{ 
    isMenuVisible = (Pos.x < 100) && (Pos.x > 0)? true : false; 

    if(isMenuVisible) 
    for (int i = 0; i < 2; i++) 
    { 
     if (icon[i].img == NULL)D3DXCreateTextureFromFileInMemory(npDevice, &images[i], sizeof(images[i]), &icon[i].img); 
     DrawTexture(icon[i].coord.x, icon[i].coord.y, icon[i].img); 
    } 

} 

我嘗試使用我的方法是這樣讀你的答案後:

void MenuIcon::drawIcons(LPDIRECT3DDEVICE9 npDevice) 
{ 
    isMenuVisible = (Pos.x < 100) && (Pos.x > 0)? true : false; 

    if(isMenuVisible) 
    for (size_t i = 0; i < images.size(); i++) 
    { 

     std::vector<BYTE>& curArray = images[i]; 
     if (icon[i].img == NULL)D3DXCreateTextureFromFileInMemory(npDevice, &curArray, curArray.size(), &icon[i].img); 
     DrawTexture(icon[i].coord.x, icon[i].coord.y, icon[i].img); 
    } 

} 

但它仍然沒有畫任何....也許&curArray是不是所謂的prop ?? ?? NB - >我登錄arrayofarray的兩個圖像和大小,並返回我正確的價值觀....

+1

你不能。您需要爲兩者分配內存並將其複製到那裏。 –

+1

你需要知道你有指針的數組的實際大小。 C++中的一種方式是不使用C風格的數組,但[[std :: array]](http://en.cppreference.com/w/cpp/container/array)(或者可選['std :: vector '](http://en.cppreference.com/w/cpp/container/vector))。 –

+0

其非常煩人:(如果我有像100圖像我怎麼能做得更有效率?,有人可以提供給我一個片段或暗示要做它應該做的嗎? – Noj

回答

3

您可以使用std::vector

#include <vector> 
#include <iostream> 
#include <iomanip> 

typedef int BYTE; 
typedef std::vector<BYTE> ByteArray; 
typedef std::vector<ByteArray> ArrayOfByteArray; 

using namespace std; 

int main() 
{ 
    // fill our array 
    ArrayOfByteArray c = {{0xcc,0xaa,0xbb,0xcc,0xff}, 
         {0xaa,0xbb,0xff} 
         // add more as desired... 
         }; 

    // loop on each entry 
    for (size_t i = 0; i < c.size(); i++) 
    { 
     // get the byte array for entry i 
     std::vector<BYTE>& curArray = c[i]; 

     // output the values found for this array 
     for (size_t j = 0; j < curArray.size(); ++j) 
     cout << std::hex << curArray[j] << " "; 

     cout << "\n"; 
    } 
} 

Live Example

std::vector知道每個的大小這些條目與數組不同。

拿這裏的代碼,並添加到它,以適應你想要做的圖像。

+0

感謝您的支持,我嘗試使用像這樣的方法:請參閱編輯.... – Noj