- 113 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 18:51:50.32 ]
- ポインタについて質問させて下さい。
いま、あるメモリ上にint型の領域をおき int*型ポインタ変数ip3にそのアドレスを、 int**型ポインタ変数ip2にip3のアドレスを、 int***型ポインタ変数ip1にip2のアドレスを入れ、 ip1から辿って***ip1でint型の値を得られるようにすることを考えます。すなわち、 ip1→ip2→ip3→int型の値 のような形にしたいという事です。それで以下のようなコードを書いたのですが int ***ip1, **ip2, *ip3; ip3 = malloc(sizeof(int)); *ip3 = 2; ip2 = malloc(sizeof(void*)); *ip2 = ip3; ip1 = malloc(sizeof(void*)); *ip1 = ip2; printf("%d",***ip1); これだと型宣言の時点において、int型の値との間に挟まれているポインタの数に応じて、*の数を静的に決めなければなりません。 最終的にint型の値を取り出す際には、*の数を指定してやらなければならないと思いますが、 ip1, ip2, ip3はその仲立ちに過ぎないのですから、「int型からポインタ何個分離れているか」はドントケアで良いはずです。 このような場合、そのように定義するのが適切でしょうか? ip1,ip2,ip3をvoid*で定義しようとしたらエラーが出ました。
|

|