2016-01-05 36 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