• 検索結果がありません。

アルゴリズムとデータ構造 補足資料 3-1 「関数呼び出し」

N/A
N/A
Protected

Academic year: 2021

シェア "アルゴリズムとデータ構造 補足資料 3-1 「関数呼び出し」"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

アルゴリズムとデータ構造 補足資料 3-1

「関数呼び出し」

横浜国立大学 理工学部 数物・電子情報系学科 富井尚志

(2)

int func1(int n) {

int answer;

answer = n * n;

return answer;

}

戻り値が int 型の関数 func1

int 型 (32bit) 仮引数 n

(自動)変数 answer

int 型 (32bit)

answer = n * n;

変数 answer は

関数 func1 内だけで有効 仮引数 n には

呼び出し時の値が 格納される

return

int 型 (32bit)

定義された 内部手続きを 順に実行する

値と制御(実行位置)を

呼び出し元に戻す

(3)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数 num

int 型 (32bit)

num=5;

printf(“%d\n”, func1(num));

変数 num は

関数 main 内だけ で有効

引数のない (void 型 ) 関数もある。

c.f. 「手続き」

(procedure)

return

int 型 (32bit)

定義された 内部手続きを 順に実行する

値と制御を 呼び出し元

(シェル)に戻す int main(void)

{

int num;

num=5;

printf(“%d\n”, func1(num));

return 0;

}

(4)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(num));

変数 num は

関数 main 内だけ で有効

引数のない (void 型 ) 関数もある。

c.f. 「手続き」

(procedure)

return

int 型 (32bit)

定義された 内部手続きを 順に実行する

値と制御を 呼び出し元

(シェル)に戻す int main(void)

{

int num;

num=5;

printf(“%d\n”, func1(num));

return 0;

}

実行は main から!

実行順序

(5)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(5));

変数 num は

関数 main 内だけ で有効

引数のない (void 型 ) 関数もある。

c.f. 「手続き」

(procedure)

return

int 型 (32bit)

定義された 内部手続きを 順に実行する

値と制御を 呼び出し元

(シェル)に戻す int main(void)

{

int num;

num=5;

printf(“%d\n”, func1(num));

return 0;

}

実行は main から!

実行順序

(6)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(5));

return

int 型 (32bit)

main

の実行は

一時中断して、

関数 func1に

制御(実行位置)が 移る

戻り値が int 型の関数 func1(5)

5 int 型 (32bit) 仮引数 n

(自動)変数 answer

int 型 (32bit)

answer = n * n;

return

int 型 (32bit) 関数呼び出し

実行順序

(7)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(5));

return

int 型 (32bit)

main

の実行は

一時中断して、

関数 func1に

制御(実行位置)が 移る

戻り値が int 型の関数 func1(5)

5 int 型 (32bit) 仮引数 n

(自動)変数 answer

int 型 (32bit)

answer = n * n;

return

int 型 (32bit) 関数呼び出し

(中断中)

実行順序

(8)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(5));

return

int 型 (32bit)

main

の実行は

一時中断して、

関数 func1に

制御(実行位置)が 移る

戻り値が int 型の関数 func1

5 int 型 (32bit) 仮引数 n

(自動)変数 answer

int 型 (32bit)

answer = 5 * 5;

return

int 型 (32bit) 関数呼び出し

(中断中)

実行順序

(9)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(5));

return

int 型 (32bit)

main

の実行は

一時中断して、

関数 func1に

制御(実行位置)が 移る

戻り値が int 型の関数 func1

5 int 型 (32bit) 仮引数 n

(自動)変数

answer 25

int 型 (32bit)

answer = 5 * 5;

return

int 型 (32bit) 関数呼び出し

(中断中)

実行順序

(10)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, func1(5));

return

int 型 (32bit)

main

の実行は

一時中断して、

関数 func1に

制御(実行位置)が 移る

戻り値が int 型の関数 func1

5 int 型 (32bit) 仮引数 n

(自動)変数

answer 25

int 型 (32bit)

return 25

int 型 (32bit) 関数呼び出し

(中断中)

answer の値

(11)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, 25);

return

int 型 (32bit)

戻り値が int 型の関数 func1(5)

5 int 型 (32bit) 仮引数 n

(自動)変数

answer 25

int 型 (32bit)

return 25

int 型 (32bit) func1(5)=25 : 値が戻る

制御(実行位置)が 呼び出し元に戻る

関数呼び出しの結果、

「値」と「制御」が

呼び出し元に戻る

(12)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, 25);

return

int 型 (32bit)

画面に 25

と表示される

(13)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, 25);

return 0

int 型 (32bit)

(14)

戻り値が int 型の関数 main

void 型 (0bit) 仮引数 : なし

(自動)変数

num 5

int 型 (32bit)

num=5;

printf(“%d\n”, 25);

return 0

int 型 (32bit)

main()=0 :

シェルに 0 (正常終了)が戻る

→ コマンド実行が終了し、

プロンプトが現れる

参照

関連したドキュメント