一元'*'的类型参数无效

时间:2012-03-26 21:06:42

标签: c++ c arduino

我的Arduino C ++代码有问题。这是功能:

  void sendDeviceName(){
  char buffer[3] = "";
  incomingCommand.toCharArray(buffer, 3);
  int deviceNumber = atoi(*buffer[2]);
  Serial.println(EEPROMreadDevice(deviceNumber));
}

当我尝试编译时,我的代码编译器返回:

  

错误:一元'*'

的无效类型参数

我试图自己解决,但我不去。

3 个答案:

答案 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