関数ポインタ変数ptfに自作関数のアドレスを代入し*ptfをつかって自作関数を実行してみましょう その2
ソーラー「それでは
関数ポインタ変数宣言により作製された
関数ポインタ変数ptfに自作関数newmadefunctionの
アドレスを代入したのち
*ptf
を用いて
自作関数newmadefunctionを実行してみよ~う😊
その2となるね。
さきほどの
自作関数の定義は
int newmadefunction(int x) {
printf("%d円GETしました\n", x);
return 1;
}
だったけど
今度の自作関数の定義は
void newmadefunction(void) {
printf("青い海です\n");
return ;
}
としてみよう。
さあ *ptfを用いて
この自作関数newmadefunctionが実行できるかな😊
それでは
*ptfを用いて自作関数newmadefunctionを実行する
次のプログラムをご覧ください。」
#include <stdio.h>
void newmadefunction(void) {
printf("青い海です\n");
return;
}
int main(void) {
void(*ptf)(void);
ptf = newmadefunction;
(*ptf)();
return 0;
}
コンパイル結果(EAZY IDECの場合)
青い海です
ビルド結果(Visual Studioの場合)
青い海です
ソーラー「コンパイル結果に
青い海です
が表示されたね。
(*ptf)();
をもちいて
自作関数の定義の
printf("青い海です\n");
を実行することができました。
この場合は
プログラムが実行されると
自作関数newmadefunctionは
機械語に翻訳されてメモリに格納されます。
その時の
機械語に翻訳された自作関数newmadefunctionを格納している
先頭のメモリのアドレスを
格納する関数ポインタ変数ptfが
関数ポインタ変数宣言
void(*ptf)(void);
により
作製されています。
*ptfが
機械語に翻訳された自作関数newmadefunctionが格納されているメモリに
アクセスして
自作関数newmadefunctionを
呼び出して実行することができるためには
やはり
さきほどのエピソードの時と同様に
関数ポインタ変数ptfに
自作関数newmadefunctionを格納している先頭のメモリのアドレスが
格納されてなければいけないんだね。
そうすることにより
*ptfは自作関数newmadefunctionを表すことになるんだ。
そこで
どのように
自作関数newmadefunctionを格納している先頭のメモリのアドレス
を
関数ポインタ変数ptfに代入するかなんだけど
このプログラムでも記述されているように
ptf = newmadefunction;
と
関数ポインタ変数に自作関数名newmadefunction
を代入すれば
自作関数newmadefunctionを格納している先頭のメモリのアドレス
を
関数ポインタ変数ptfに代入することができるんだよ。
これで
*ptfを用いて
自作関数newmadefunctionを格納しているメモリにアクセスして
自作関数newmadefunctionを呼び出して
使用することができるようになるんだ。
プログラムのなかの
(*ptf)();
を見てみてよ。(´▽`*)
(*ptf)();
が実行されて
コンパイル結果
青い海です
が表示されているんだよ。」
アレサ「ソーラーさん
(*ptf)(void);
でなく
(*ptf)();
と記述するのですね。」
ソーラー「自作関数の定義は
void newmadefunction(void) {
printf("青い海です\n");
return;
}
となっているけど
*ptfをもちいて自作関数newmadefunctionを
呼び出して使用するには
(*ptf)(void);
でなく
(*ptf)();
と記述する仕組みになっているんだ。
(*ptf)(void);
と記述すると
コンパイルエラーになります。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます