如何向接收uint8_t指针的函数传递字符串字面量?
解决方法:向uint8_t*参数的函数传递字符串字面量
现有C函数:
void outTxData(uint8_t *outString) { //执行相关操作 }
想要直接通过outTxData("HELLO")传递字符串字面量,因类型不匹配无法实现,以下是几种最简单的解决方式:
直接强制类型转换(最简便)
调用时将字符串字面量强制转换为uint8_t*类型,直接匹配函数参数:outTxData((uint8_t*)"HELLO");注意:如果函数内部会修改传入的字符串,这种方式会触发未定义行为(字符串字面量存储在只读内存),仅适用于函数仅读取数据的场景。
修改函数参数为const uint8_t(更安全)*
调整函数参数类型,明确标记指针指向的内容为只读,避免误修改风险:void outTxData(const uint8_t *outString) { //执行相关操作 }调用时用强制转换保证类型匹配:
outTxData((const uint8_t*)"HELLO");临时数组中转(需修改字符串时用)
如果函数内部需要修改字符串内容,先把字面量复制到uint8_t数组中再传递:uint8_t txData[] = "HELLO"; outTxData(txData);
内容的提问来源于stack exchange,提问作者ElecDesigner
相关产品推荐
相关产品推荐

