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

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

对于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;

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

c embedded
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.