gpt4 book ai didi

C++/Arduino 将指向存储在 PROGMEM 中的二维数组的指针传递给函数

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:52 26 4
gpt4 key购买 nike

我有几个 const int 二维数组全局存储在 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}
}

我想在一个函数中读出这个二维图像数组。应在参数中指定要读出的图像。

void printImage(image)
{
// do something with element i,j of image
pgm_read_byte(image[i][j])
}

我对指针等的使用不是很熟悉,但我知道这是实现它的方法。你能告诉我如何让它发挥作用吗?

我现在是怎么做的;我有不带任何参数的函数 printImage1(),在主体函数中我使用:

pgm_read_byte(&image1[i][j])

读出image1。对于 image2、image3 等。我复制函数 printImage1 并将 imgage1 从上面更改为 image2、image3 等。这是冗余编程,这就是为什么我想仅使用一个函数 printImage 在参数中指定图像。

最佳答案

很容易 - 通过使用数组引用:

void printImage(const int (&image)[5][17])
{
// ...
}

如果您希望传递的数组的大小始终为 5 x 17。否则您可以使用指向它第一个元素的指针:

void printImage(const int (*image)[17])
{
// ...
}

关于C++/Arduino 将指向存储在 PROGMEM 中的二维数组的指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com