在 Arduino 中为 2D 指针数组赋值

Assigning values to 2D array of pointers in Arduino

本文关键字:数组 赋值 指针 2D Arduino 中为      更新时间:2023-10-16

我正在做一个arduino项目,我一直在努力寻找一种方法,如何将值分配给2D指针数组(如果我正确的话(。 我有这个数组char* numbers[3][4];我希望它的长度为 4 个字符 - 用于 4 个数字(如代码(。但请注意,我不能更改声明,只能更改字符串的数量。我尝试使用 strcpy 分配值:

strcpy(*numbers[0], "1234");
strcpy(*numbers[1], "5678");
strcpy(*numbers[2], "9012");

赋值后,数组应用作函数的参数void render_numbers(char** numbers, const int index);它基本上在给定索引处打印Arduino Serial上的4位代码。 所以我调用了这个函数:

render_numbers(*numbers, 2);

我的职能:

void render_numbers(char** numbers, const int index){
Serial.println(numbers[index]);
}

所以它通过了编译器,但在 Serial 中它只打印不可读的字符(方块、问号等(。

要在 C 中分配字符串数组,请执行以下操作:

const char* numbers[]={"1234","5678","9012"};

要声明字符串数组,每个字符串有 4 个字符:

char numbers[3][4];

所以 数字[1] ==>字符*//指向第一个字符的指针 数字[1][2] ==>字符//字符值

声明指针的 2D 数组

const char* numbers[][] = {{"1234","5678"},{"1234","1111"}};

注意:strcpy 将源字符串复制到目标,包括空术语字符,因此需要 5 个字符来存储 4。

char numbers[3][5];
strcpy(numbers[1],"1234");
Serial.println(numbers[1]);