创建2D数组和指向& array-1的指针

时间:2017-12-21 18:20:50

标签: c embedded

对于arm项目中的显示驱动程序,我想以2D阵列的形式访问缓冲区,以便像这样访问它:

e.g. display_buffer[2][113]=0xff;

要通过I2C将缓冲区写入显示器,我想将整个缓冲区写出来,但需要在它前面加上0x40。

io_write(I2C_0_io, (uint8_t *)buf, 513); //where buf should be 0x40,content, of, display_buffer,...

有没有办法声明display_buffer[4][128]以便它前面有一个字节和一个指向它的指针?

我试过

uint8_t *_display_buffer = (uint8_t*)513;
uint8_t *display_buffer[4][128]=_display_buffer+1;

但当然编译器认为这不是一个好主意(“初始化程序无效”)

1 个答案:

答案 0 :(得分:2)

您需要将_display_buffer定义为足以容纳2D数组加1个字节的数组,并将display_buffer定义为指向数组的指针(可以将其作为2D数组索引)而不是一个2D数组:

uint8_t _display_buffer[513] = { 0x40 };
uint8_t (*display_buffer)[128]=(uint8_t (*)[128])(_display_buffer+1);