Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++/Arduino将指向PROGMEM中存储的2D数组的指针传递给函数_C++_Arrays_Arduino - Fatal编程技术网

C++ C++/Arduino将指向PROGMEM中存储的2D数组的指针传递给函数

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 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])

读出图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])上面添加一个显式原型;