当我尝试使用指针访问数组数组时遇到问题,我有几个数组声明如下:
BYTE a[5] = {0xcc,0xaa,0xbb,0xcc,0xff};
BYTE b[3] = {0xaa,0xbb,0xff};
这个BYTE数组表示我想从dll加载到内存中的图像,我可以毫无困难地单独访问它们,但我想从一个带指针的循环访问它们......
我试图将它们放入这样的数组数组中:
BYTE* c[2] = {a,b};
但是当我想循环遍历这个指针c [i] doesent load image at i index into memory时,我该怎么办呢?
我试图在循环中使用此方法绘制图像以避免重复行(考虑c是图像[i])
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
不是真的叫? NB - &gt;我记录了arrayofarray的图像和大小,它返回了正确的值....
答案 0 :(得分: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";
}
}
与数组不同,std::vector
知道每个条目的大小。
在此处输入代码,然后添加代码以适应您尝试处理图片的行为。