如何创建指向 const uint8_t 数组的指针 const 数组?

问题描述 投票:0回答:1

我有几个不同长度的

const uint8_t
数组。我需要创建一个
const
数组,它有一个指向每个数组的指针(最好还有一种自动计算另一个
const
数组大小的方法)。

// uint8_t arrays
const uint8_t SprIdle[] = {
    // bytes of data...
};

const uint8_t SprJump[] = {
    // bytes of data...
};

const uint8_t SprFall[] = {
    // bytes of data...
};

// Pointer arrays
// None of these work
// They all give some variation of:
// a value of type "const uint8_t *" cannot be used to initialize an entity of type "int *const"
const int* SpriteTable[] = {
    SprIdle,
    SprJump,
    SprFall,
};

const int* SpriteTable[] = {
    &SprIdle,
    &SprJump,
    &SprFall,
};

int* const SpriteTable[] = {
    SprIdle,
    SprJump,
    SprFall,
};

int* const SpriteTable[] = {
    &SprIdle,
    &SprJump,
    &SprFall,
};

const int* const SpriteTable[] = {
    SprIdle,
    SprJump,
    SprFall,
};

const int* const SpriteTable[] = {
    &SprIdle,
    &SprJump,
    &SprFall,
};

我看到有些人问了一个非常相似的问题并给出了可接受的答案,但他们似乎对我的情况不起作用。其中大多数应该在我尝试过的事情上面列出。

c++ arrays pointers
1个回答
0
投票

设法让它与以下内容一起使用(包括预先计算数组大小):

const uint8_t data0[] = {
    0x00,0x10,0x20
};

const uint8_t data1[] = {
    0xC0,0xE0,0xD0,0xF0
};

const uint8_t *ptrs[] = {
        data0, data1
};

const uint8_t lens[] = {
        sizeof(data0), sizeof(data1)
};

然后我就可以用

*(ptrs[spriteIndex] + dataOffset)
读取数据了。

© www.soinside.com 2019 - 2024. All rights reserved.