関数を格納している先頭のメモリのアドレスを関数のポインタ変数ptfに代入すれば*ptf は関数をあらわすことになり*ptfを用いて関数を呼び出して使用することができるようになります。

関数を格納している先頭のメモリのアドレスを関数のポインタ変数ptfに代入すれば*ptf は関数をあらわすことになり*ptfを用いて関数を呼び出して使用することができるようになります。

ソーラー「さあ 今日もはりきっていこう😊


調子はどうかな?」


アレサ「そうしましょう😊」



ソーラー「


次のプログラムをご覧ください


#include <stdio.h>


void newmadefunction(void){


printf("とてもきれいな青い海です\n");


return ;


}


int main (void){


newmadefunction();


return 0;


}


コンパイル結果


とてもきれいな青い海です


このプログラムでは


自作関数の定義


void newmadefunction(void){


printf("とてもきれいな青い海です\n");


return ;


}


が行われています。


このプログラムは


コンパイルされると


機械語に変換されて実行されます。


ところで


機械語は0と1のデータのあつまりでした


機械語に変換されたプログラムは


実行される前に


すべて 1度



   🍓🍓🍓 メモリに格納されます 🍓🍓🍓




そうしてから



CPUはそれらの命令をレジスタに格納して実行していくのでした。



となると



自作関数


void newmadefunction(void){


printf("とてもきれいな青い海です\n");


return ;


}



      🍓🍓🍓コンパイル後🍓🍓🍓 



機械語に翻訳されて


メモリに格納されていることになります


つまり


自作関数newmadefunctionを格納しているメモリがあるというわけです。


ある範囲のメモリにわたって


自作関数newmadefunctionを機械語に翻訳した0と1のデータの集まりが


格納されていることになるのですが


もちろん


0と1のデータの集まりを

格納している先頭のメモリというものがあります


関数ポインタ変数は


その


0と1の機械語データの集まりに変換された自作関数を


格納している先頭のメモリのアドレスを格納することができます。


変数aのアドレスをポインタ変数ptaに


pta=&aと代入すれば


*pta



変数a


と等しい働きを持ちましたね。


自作関数newmadefunctionを格納している先頭のメモリのアドレス


を格納する


関数ポインタ変数の名前をptfに設定します。


(関数ポインタ変数名は 自由に設定することができます)


自作関数newmadefunctionを格納している先頭のメモリのアドレスを


関数のポインタ変数ptfに代入すれば


*ptf



自作関数newmadefunction


をあらわしていることになり


*ptf


を用いて


自作関数newmadefunctionを


呼び出して使用することができるようになります。


*pta



変数a


を表すことになったように


*ptf



自作関数newmadefunctin


を表すことになるわけです。



関数ポインタ変数の概要は


こんな感じかな😊」



アレサ「ところでマックスさん どこにいかれたのでしょうか?


ソーラーさん お知りになられていませんか?」


ソーラー「・・・(´▽`*)もう、最高さ」













  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る