自作関数をインライン関数に設定してみよう その1
ソーラー「自作関数を含んだプログラムがビルドされて実行されるとき
そもそもどのようなことがおこるのか?
ちょっとここでみていこうかな。
#include <iostream>
using namespace std;
void function(int a, int b) {
cout << a + b << "\n";
return;
}
int main() {
function(1,2);
return 0;
}
ビルド実行結果
3
ソーラー「このプログラムが
ビルドされ実行されると
0と1のみで表される機械語プログラムに翻訳されて
メモリに格納されます。
そして
メモリに格納された機械語プログラムを
コンピュータは読み込み実行していきます。
このとき
自作関数の定義の部分
👇
void function(int a, int b) {
cout << a + b << "\n";
return;
}
👆
と
main関数の部分
👇
int main() {
function(1,2);
return 0;
}
👆
は
機械語に翻訳されて
別々のメモリに格納されていきます。
プログラムのmain関数が実行されていくときは
コンピュータは
メモリに格納された機械語に翻訳されたmain関数をよみこんでいきます。
そして機械語翻訳された
function(1,2);
の部分に到着します。
すると
コンピュータは
main関数の実行を中断し
自作関数functionの定義を参照するために
自作関数functionの定義の格納されているメモリの読み込みに入ります。
つまり
機械語に翻訳されたmain関数プログラムが格納されているメモリから
自作関数functionの定義が翻訳されたプログラムが格納されているメモリ
へ読み込みが移ります。
そして
function(1,2);
の実行後
再び
機械語に翻訳されたmain関数プログラムが
格納されているメモリの読み込み実行が
中断されている箇所から再開されます。
そして
最後に
機械語に翻訳された
return 0;が実行されて
プログラムの実行は終了します。
中断された箇所から再開できるよう
あるメモリには
機械語に翻訳されたfunction(1,2);
の次の命令文
機械語に翻訳されたreturn 0;
が格納されているメモリのアドレスが格納されています。
そのメモリのアドレスをたよりに
コンピュータは
機械語に翻訳されたmain関数プログラムの実行を再開しています。。
マックス「そんなことが おこなわれているのか・・・
プログラムは
上から下に
実行されているだけかとおもったぞ
器用じゃないか コンピュータちゃんは😊」
てんC「そうですね。
いろいろな知恵が
コンピュータの設計にいかされているのですね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます