1

我不熟悉 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++ 转换。

非常感谢。

4

1 回答 1

3

你的演员阵容过于复杂。你得到数组的第一个元素,然后是那个元素的地址。在表达式中,数组衰减为指针,因此您可以仅通过数组名称获取数组的地址:

sData = (char*)sTmp;

就像上面的@Richard 所说,在 C++ 上进行强制转换的最佳方法是使用 reinterpret_cast,如下所示:

sData = reinterpret_cast<char*>(sTmp);

最后,sTemp(就像我已经提到的)将衰减为表达式上的指针,特别是unsigned char * (这是寻址原始内存的常用方法),因此您很可能实际上不需要将其转换为完全是字符*。(除非你必须打印它,这似乎并不正确)

于 2012-11-05T23:58:13.677 回答