我有一个关于Arduino里,二维数组作为函数参数的问题
代码如下:
char tastatur[3][3] = {
{'a','c','1'},
{'g','8','5'},
{'q','Q','s'}
};
void ausgabe(char *tas,int hangshu,int lieshu);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
ausgabe(tastatur,3,3);
}
void ausgabe(char *tas,int hangshu,int lieshu){
for(int i = 0;i < hangshu;i++)
{
for(int j = 0;j < lieshu;j++)
{
Serial.println(tas[i][j]);
delay(1000);
}
}
}
编译后报了如下错误:
Compilation error: cannot convert 'char ()[3]' to 'char' for argument '1' to 'void ausgabe(char*, int, int)'
具体报错信息如下:
C:\Users\91274\AppData\Local\Temp\.arduinoIDE-unsaved2023515-5160-1inuzg1.r527\sketch_jun15a\sketch_jun15a.ino: In function 'void loop()':
C:\Users\91274\AppData\Local\Temp\.arduinoIDE-unsaved2023515-5160-1inuzg1.r527\sketch_jun15a\sketch_jun15a.ino:16:23: error: cannot convert 'char (*)[3]' to 'char*' for argument '1' to 'void ausgabe(char*, int, int)'
ausgabe(tastatur,3,3);
^
C:\Users\91274\AppData\Local\Temp\.arduinoIDE-unsaved2023515-5160-1inuzg1.r527\sketch_jun15a\sketch_jun15a.ino: In function 'void ausgabe(char*, int, int)':
C:\Users\91274\AppData\Local\Temp\.arduinoIDE-unsaved2023515-5160-1inuzg1.r527\sketch_jun15a\sketch_jun15a.ino:25:30: error: invalid types 'char[int]' for array subscript
Serial.println(tas[i][j]);
^
exit status 1
Compilation error: cannot convert 'char (*)[3]' to 'char*' for argument '1' to 'void ausgabe(char*, int, int)'
如果把函数ausgabe()里面的for循环直接放在loop里是没有问题的。
就想知道如果二维数组作为函数参数需要注意些什么,为什么这里会报错。