创建2D数组和指向&array-1的指针
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建2D数组和指向&array-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;
但当然编译器认为这不是一个好主意(“初始化程序无效”)
答案
您需要将_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);
以上是关于创建2D数组和指向&array-1的指针的主要内容,如果未能解决你的问题,请参考以下文章
从 2D 向量创建 1D 向量的函数(错误:表达式必须具有指向对象的指针类型)
指向成员数组的静态指针,用于安全的operator []访问