我有几个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,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])
读出image1。对于image2,image3等我复制了printImage1函数并将imgage1从上面改为image2,image3等。这是多余的编程,这就是为什么我只想使用一个函数printImage来指定参数中的图像。
答案 0 :(得分:2)
轻松 - 使用数组引用:
void printImage(const int (&image)[5][17])
{
// ...
}
如果希望传递的数组总是大小为5 x 17.否则你可以使用指向它的第一个元素:
void printImage(const int (*image)[17])
{
// ...
}