我的Arduino C ++代码有问题。这是功能:
void sendDeviceName(){
char buffer[3] = "";
incomingCommand.toCharArray(buffer, 3);
int deviceNumber = atoi(*buffer[2]);
Serial.println(EEPROMreadDevice(deviceNumber));
}
当我尝试编译时,我的代码编译器返回:
错误:一元'*'
的无效类型参数
我试图自己解决,但我不去。
答案 0 :(得分:2)
错误来自buffer[2]
是char
而不是指针的事实。这里没有什么可以取消引用的。如果您尝试将表示数字的char
转换为相应的int
值,请使用:
int deviceNumber = buffer[2] - '0';
或者通常如果你想要使用char
数组的最后一个N-K字符:
int deviceNumber = atoi(buffer + K);
所以在你的情况下:
int deviceNumber = atoi(buffer + 2);
答案 1 :(得分:2)
buffer[2]
是char
,而非char *
,因此您无法取消引用它。
答案 2 :(得分:1)
我试图自己解决,但我不去。
嗯,表达式buffer[2]
的类型为char
。您无法取消引用char
。也许你的意思是......
buffer + 2
相当于
&buffer[2]
那将编译,但作为atoi
的参数是错误的:atoi
需要一个包含至少一个数字的以零结尾的字符串,以及指向{{1的最后一个元素的指针最多只能是一个指向终止空字节的指针(没有数字)。
也许这就是你的意图:
buffer
或者如果你想要一个存储在索引2的数字:
atoi( buffer )
(C ++保证十进制数字的字符代码是连续的)。
或者,如果buffer[2] - '0'
值直接是您的整数值:
char