前回
参考ページ
モノづくりC言語塾 C言語 関数ポインタ【ポインタを使って関数を呼ぶ仕組み解説】
準備
今回はオンラインコンパイラを使用します。
オンラインコンパイラ
ソースコード
sample.c
#include <stdio.h>
//関数fを代入することを想定して、関数ポインタuを宣言する
int (*u)(int i);
//関数fを代入することを想定して、関数ポインタuを構造体HELLO内に定義する
struct HELLO{
int j;
int (*u)(int i);
};
int f(int i){
//引数iを表示
printf("_%d_",i);
//引数iに1を加算
i++;
if(i>10){
//引数iが10より上になったら1を返す
return 1;
}
else{
//関数ポインタuにより、関数fを代理的に再帰呼び出し
u(i);
}
//戻り値として0を返す
return 0;
}
int main() {
//関数ポインタuに関数fを代入する
u=f;
//構造体HELLOの変数lを宣言する
struct HELLO l;
//変数l.jに0を入れる
l.j=0;
//関数ポインタl.uに関数fを入れる
l.u=f;
//関数ポインタl.uを実行する
l.u(l.j);
//改行する
printf("\n");
return 0;
}
実行結果
console
_0__1__2__3__4__5__6__7__8__9__10_