一元“*”的类型参数无效
Invalid type argument of unary ‘*’
我的Arduino C++代码有问题。以下是功能:
void sendDeviceName(){
char buffer[3] = "";
incomingCommand.toCharArray(buffer, 3);
int deviceNumber = atoi(*buffer[2]);
Serial.println(EEPROMreadDevice(deviceNumber));
}
当我尝试编译时,我的代码编译器返回:
错误:一元"*"的类型参数无效
我试着自己修,但我不去。
buffer[2]
是char
,而不是char *
,因此不能取消引用它。
错误源于buffer[2]
是char
,而不是指针。这里没有什么可取消引用的。如果您试图将代表数字的char
转换为相应的int
值,请使用:
int deviceNumber = buffer[2] - '0';
或者,如果您想要char
数组的最后N-K个字符,通常使用:
int deviceNumber = atoi(buffer + K);
所以在你的情况下:
int deviceNumber = atoi(buffer + 2);
我试着自己修,但我不去。
表达式buffer[2]
属于char
类型。不能取消引用char
。也许你的意思是…
buffer + 2
相当于
&buffer[2]
这将被编译,但作为atoi
的参数,这是错误的:atoi
需要一个以零结尾的字符串,该字符串至少包含一个数字,而指向buffer
最后一个元素的指针最多可以是指向终止空字节(没有数字)的指针。
也许这就是你想要的:
atoi( buffer )
或者,如果你想要一个存储在索引2:的数字
buffer[2] - '0'
(C++保证小数位数的字符代码是连续的)。
或者,如果char
值直接是您的整数值:
buffer[2]
相关文章:
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- "std::shared_ptr":不是参数"_Ty"的有效模板类型参数
- 具有可变参数非类型参数的模板专用化
- 错误:一元"*"的类型参数无效(具有"int"):使用 mergesort 计算
- 错误 带有模块的一元"*"(具有"int")的类型参数无效
- 一元'*'的类型参数无效(有双精度)
- 即使我传递了无效的类型参数,我为什么还能在没有错误的情况下编译此代码
- C++:无效的类型参数"->"
- 3 错误:错误:未在此范围内声明'Entry'。错误:模板参数 1 无效。错误:令牌之前声明中的类型无效'('
- 一元*的类型冲突error和无效类型参数具有int
- 映射迭代器:一元'*'的无效类型参数(具有"int")
- 一元 '*' 的 #define 和无效类型参数(具有 'double')
- 一元'*'的类型参数无效(有"布尔")
- 数组中一元'*'(具有"int")最低元素的类型参数无效
- 一元“*”的类型参数无效
- 错误:一元“*”(具有“int”)的类型参数无效
- 如何修复"'一元'类型参数无效?
- 如何修复"'一元*'的无效类型参数?
- 错误:一元'*'的类型参数无效