ポインタのポインタ、そしてその構造体の話

ポインタのポインタなんて使うことねぇだろーと
思ってたんですが、DirectShowのプログラミングで、
画像をグラブしてくるまでにいろいろとある一連の処理を
関数化するときに使うことになりました。

  • COMはポインタにインターフェースを返す
  • メインルーチンでもポインタからメソッドを呼び出す必要あり(メインルーチンでも作ったインターフェースを呼び出すことがある)

ので、ポインタのポインタを渡してあげて、値を書き込んでもらう
というようなことをしたくて。


ポインタ
http://www9.plala.or.jp/sgwr-t/c/sec10.html


CoCreateInstance
http://yokohama.cool.ne.jp/chokuto/urawaza/api/CoCreateInstance.html


で、疑問が発生するわけですが、構造体のポインタのメンバに
アクセスするときはアロー演算子を使うのは自明です。

struct sSTRUCT *test;
test->a = "hoge";


こんな感じ。
んでは構造体のポインタのポインタのメンバにアクセスするときは?
はい、こんな感じになります。

struct sSTRUCT **test;
(*test)->a = "hoge";


まぁ分かれば分かっちゃいますよね。
「ポインタのポインタ」の実体はアドレスです。
つまりポインタのポインタの実体はポインタを差すわけです。
あーなんだこの文章w


C言語の勉強 - なんでもメモ - livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/yoshiki/d/C%b8%c0%b8%ec%a4%ce%ca%d9%b6%af


構造体
http://www.cc.kyoto-su.ac.jp/~yamada/pB/struct.html