将值分配给Arduino中的2D指针数组

时间:2020-05-31 18:16:55

标签: c++ arrays arduino

我正在研究一个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串行上打印4位代码。 所以我调用了该函数:

render_numbers(*numbers, 2);

我的功能:

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

因此它通过了编译器,但是在“串行”中它仅打印不可读的字符(正方形,问号等)

1 个答案:

答案 0 :(得分:0)

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

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

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

char numbers[3][4];

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

声明2D指针数组

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

注意:strcpy将源字符串复制到目标(包括空字符char),因此它需要5个字符才能存储4。

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