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