スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

関数ポインタ

関数ポインタにて色々学べることがあったので書きます。

まず普通のポインタ型と関数ポインタ型は別の扱いとなっているようです。(多分?)
具体例としては
「void *pointer」と
「void (*method)()」です。

ですので関数構造体を作るときは「関数用のポインタ」となるようです。

だから構造体メンバに関数ポインタを作るときはこう!
typedef struct{
 void (*method)();
} Method;


関数ポインタ配列はこう!
void (*method[])();


です!
初期化はこう!
Method method = { hogeMethod, fooMethod };
void (*method[])() = { hogeMethod, fooMethod };

です!

ここのサイトを参考にさせていただきました!
http://uguisu.skr.jp/Windows/c_interface.html
http://www5c.biglobe.ne.jp/~ecb/c/16_04.html

なお、
void (*method)();

は引数ありの関数も代入できるようです。


ループによる構造体メソッド実行はできてない…。
構造体ポインタ変数にすればポインタをインクリメントしてアクセスできるんじゃないかと思ったんだけどな…。

キャストして実行すればいいのか…?
スポンサーサイト

コメント

非公開コメント
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。