変なことを聞いているかもしれませんが、おかしかったらアドバイス・指摘お願いします。
void *test;
int m[10];
として、
test = &m;
はわかりますが、その逆のやり方はどうすればよいでしょう?
Testのアドレスをmの先頭アドレスとしたいのですが。
かなりうとくてすいません..よろしくお願いします。
mは配列型のオブジェクトですから,ポインタを代入することはできません。
配列型のオブジェクトはほとんどポインタに変換される,というだけであって,あくまで配列型とポインタ型は別物です。
void *型のポインタを特定の型のポインタとして扱いたい場合は,その型に変換する必要があります。
Cであれば自動変換があるため,
int * p = test;
となります。C++ではキャストが必要なので,
int * p = static_cast<int *>(test);
または旧来のスタイルを使って
int * p = (int *)test;
となります。
# もちろん,ポインタ型のオブジェクトを初期化するのではなく代入することも可能。
YuOさんありがとございます。
> mは配列型のオブジェクトですから,ポインタを代入することはできませ
自分が考えている通りでした。
やろうとしていたことは
int * p
を利用してできたので、解決です。
ツイート | ![]() |