C++相談室 part28
レス数が950を超えています。1000を超えると書き込みができなくなります。
0970デフォルトの名無しさん
NGNGint func(LPVOID*) {
?
}
このようなLPVOID*型を引数にもち、そのポインタのポインタに
何らかの4バイトの結果を入れ、戻り値としてint型を返す関数が
あったとします。
LPVOID pbuf;
func((LPVOID*)&pbuf);//戻り値は無視する。
このように使えばその後で
wsprintf(buf, "%d", *(DWORD*)pbuf);
のようにして4バイトの値を得ることができました。
そこで、LPVOID pbuf;と宣言していたものを、LPDWORD pbuf;
とだけ変更してもうまくいきました。
DWORD *pbuf;とだけ変更した場合もうまくいきました。
DWORD pbuf[1];とだけ変更した場合もうまくいくと思ったのですが、
wsprintf(buf, "%d", *(DWORD*)pbuf);の結果が他の宣言の場合と
異なり、予想外だったのです。
func関数にはメモリの実体のポインタのポインタを指定すれば
いいようなんですが、なぜDWORD pbuf[1];とするとうまくいかなかった
のでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。