Void型ポインタのアドレスを配列の先頭アドレスとするやり方

解決


みね  2012-05-11 09:56:48  No: 73371  IP: 192.*.*.*

変なことを聞いているかもしれませんが、おかしかったらアドバイス・指摘お願いします。

void *test;
int m[10];

として、
test = &m;
はわかりますが、その逆のやり方はどうすればよいでしょう?

Testのアドレスをmの先頭アドレスとしたいのですが。
かなりうとくてすいません..よろしくお願いします。

編集 削除
YuO  2012-05-11 10:23:21  No: 73372  IP: 192.*.*.*

mは配列型のオブジェクトですから,ポインタを代入することはできません。
配列型のオブジェクトはほとんどポインタに変換される,というだけであって,あくまで配列型とポインタ型は別物です。

void *型のポインタを特定の型のポインタとして扱いたい場合は,その型に変換する必要があります。
Cであれば自動変換があるため,
int * p = test;
となります。C++ではキャストが必要なので,
int * p = static_cast<int *>(test);
または旧来のスタイルを使って
int * p = (int *)test;
となります。
# もちろん,ポインタ型のオブジェクトを初期化するのではなく代入することも可能。

編集 削除
みね  2012-05-11 11:40:21  No: 73373  IP: 192.*.*.*

YuOさんありがとございます。
> mは配列型のオブジェクトですから,ポインタを代入することはできませ

自分が考えている通りでした。
やろうとしていたことは
int * p 
を利用してできたので、解決です。

編集 削除