説明を明確にするために編集しました。 なぜこの作業はまだコンパイルされていませんか?memcpyのメンバ変数へのポインタを取得する方法
class Member{
public:
__int32 PublicInt;
}
Member x;
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32));
はこのint型が格納されている場所へのポインタを取得していないのですか?あなたの変数が
int Into;
ある場合
説明を明確にするために編集しました。 なぜこの作業はまだコンパイルされていませんか?memcpyのメンバ変数へのポインタを取得する方法
class Member{
public:
__int32 PublicInt;
}
Member x;
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32));
はこのint型が格納されている場所へのポインタを取得していないのですか?あなたの変数が
int Into;
ある場合
はあなたが理解するためsample速いです:
#include<iostream>
#include<cstring>
class Myclass
{
public:
char str2[40];
};
int main()
{
char str1[]="Sample string";
Myclass obj;
memcpy(&(obj.str2),str1,strlen(str1)+1);
std::cout<<obj.str2;
return 0;
}
第H :)
...そのアドレスは次のとおりです。あなたは、配列を参照して何を得るByteArray
が本当にあるので、もしは、アドレスであること
&Into
注
バイト配列の場合は、memcpy
の
&
を間違って配置したと思っています。これはあなたが望むものです:
memcpy(&Into, ByteArray, sizeof(__int32));
また、私はこれを行うことをお勧めしたい:
memcpy(&Into, ByteArray, sizeof(Into));
...後でそのタイプを変更する場合には。ここで
yeh私はそれを知っていますが、メンバー変数にアクセスすることを話しています。 – user826228
@user:私は思っていません。あなたは 'ByteArray'から削除された'& 'を試してみましたか(本当に配列であると仮定します)? –
その仮想的なbytearrayその質問の一部ではないそのchar *配列 – user826228
あなたは 'int'をコピーしているとき、あなたは'はsizeof(int)を '使用する必要があります。 '長い' '長い(長い)'などのコピー時。今では 'int'と' __int32'を混在させています。 – MSalters
@MSalters: 'sizeof(Into)'のようなものではない? – KillianDS
私はそれが質問に無関係だったので、私はすぐにそれを入力したことを認識しています。 – user826228