我不熟悉 C++ 转换,我想将我的 C 风格转换转换为 C++ 转换。这是我的代码,
typedef unsigned char u8;
u8 sTmp[20] = {0};
//.. code to put string data in sTmp
char* sData;
sData = (char*)&(sTmp[0]);
在这里,我想转换(char*)&(sTmp[0])
为 C++ 转换。
非常感谢。
你的演员阵容过于复杂。你得到数组的第一个元素,然后是那个元素的地址。在表达式中,数组衰减为指针,因此您可以仅通过数组名称获取数组的地址:
sData = (char*)sTmp;
就像上面的@Richard 所说,在 C++ 上进行强制转换的最佳方法是使用 reinterpret_cast,如下所示:
sData = reinterpret_cast<char*>(sTmp);
最后,sTemp(就像我已经提到的)将衰减为表达式上的指针,特别是unsigned char * (这是寻址原始内存的常用方法),因此您很可能实际上不需要将其转换为完全是字符*。(除非你必须打印它,这似乎并不正确)