ページビューの合計

イエスから目を離さないでいなさい。(へブル 12:2)

2017-07-10

C言語の関数ポインタが難しい

関数ポインタを難しく感じる。例えば
int add(int x, int y){return x+y;}
と関数定義する。
関数ポインタは、void (*f)() で戻り値の
ない関数ポインタfを宣言する。
これに add を代入するにはキャストで
f  = (void (*)())add;
とする。
「これ、分かりにくくない。」
キャストの型は
void (*f)() の f を除いて括弧でくくったのよ。
f を使って足し算はこんなふう
int x = (*(int(*)())f))(10, 20);
いやらしいでしょ!!

難しい!難しい!