C++ C++/Arduino将指向PROGMEM中存储的2D数组的指针传递给函数
我有几个const int 2D数组全局存储在PROGMEM中。例如:C++ C++/Arduino将指向PROGMEM中存储的2D数组的指针传递给函数,c++,arrays,arduino,C++,Arrays,Arduino,我有几个const int 2D数组全局存储在PROGMEM中。例如: const int image1[][17]PROGMEM = { {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0}, {1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0}, {1,1,1,0,0,0,1,1,1,0,0
const int image1[][17]PROGMEM = {
{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0},
{1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0},
{1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0},
{1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0}
}
我想在函数中读出这个2d图像数组。应在参数中指定要读取的图像
void printImage(image)
{
// do something with element i,j of image
pgm_read_byte(image[i][j])
}
我对指针等的使用不是很熟练,但我知道这是一种方法。你能告诉我怎么做吗
我现在是怎么做的;我的函数printImage1()没有任何参数,在body函数中使用:
pgm_read_byte(&image1[i][j])
读出图1。对于image2、image3等,我复制函数printImage1,并将imgage1从上面更改为image2、image3等。这是冗余编程,这就是为什么我希望仅使用一个函数printImage在argumant中指定图像。很容易-使用数组引用:
void printImage(const int (&image)[5][17])
{
// ...
}
如果希望传递的数组的大小始终为5 x 17。否则,可以使用指向其第一个元素的指针:
void printImage(const int (*image)[17])
{
// ...
}
您的所有图像大小都相同吗?非常感谢,我知道这与&和*有关,但不知道如何操作。它不起作用,编译器说错误:“printImage”未在此范围内声明,即使函数按应有的方式声明??好的,我解决了这个问题,我必须在设置函数void printImage(const uint8_t(&image)[60][17])上面添加一个显式原型;