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 * (生のメモリをアドレス指定する通常の方法) に減衰するため、実際にキャストする必要がない可能性が非常に高くなります。char * まったく。(とにかく正しくないように見える印刷する必要がない限り)

于 2012-11-05T23:58:13.677 に答える