アルゴリズムとデータ構造 補足資料3-1 「関数呼び出し」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志 戻り値がint型の関数 func1 仮引数 n int 型(32bit) (自動)変数 answer int 型(32bit) int func1(int n) { int answer; answer = n * n; answer = n * n; 仮引数 nには 呼び出し時の値が 格納される 変数 answerは 関数func1内だけで有効 定義された 内部手続きを 順に実行する return answer; } 値と制御(実行位置)を 呼び出し元に戻す return int 型(32bit) 戻り値がint型の関数 main 仮引数: なし void 型(0bit) int main(void) { int num; num=5; printf(“%d\n”, func1(num)); (自動)変数 num int 型(32bit) num=5; printf(“%d\n”, func1(num)); return 0; 引数のない(void型) 関数もある。 c.f. 「手続き」 (procedure) 変数 numは 関数main内だけ で有効 定義された 内部手続きを 順に実行する } 値と制御を 呼び出し元 (シェル)に戻す return int 型(32bit) 戻り値がint型の関数 main 実行はmainから! 引数のない(void型) 関数もある。 c.f. 「手続き」 (procedure) 仮引数: なし void 型(0bit) int main(void) { int num; num=5; printf(“%d\n”, func1(num)); (自動)変数 num 5 int 型(32bit) num=5; printf(“%d\n”, func1(num)); return 0; 変数 numは 関数main内だけ で有効 定義された 内部手続きを 順に実行する } 実行順序 値と制御を 呼び出し元 (シェル)に戻す return int 型(32bit) 戻り値がint型の関数 main 実行はmainから! 引数のない(void型) 関数もある。 c.f. 「手続き」 (procedure) 仮引数: なし void 型(0bit) int main(void) { int num; num=5; printf(“%d\n”, func1(num)); (自動)変数 num 5 int 型(32bit) num=5; printf(“%d\n”, func1(5)); 変数 numは 関数main内だけ で有効 定義された 内部手続きを 順に実行する return 0; } 実行順序 値と制御を 呼び出し元 (シェル)に戻す return int 型(32bit) 戻り値がint型の関数 main 戻り値がint型の関数 func1(5) 仮引数: なし 仮引数 n void 型(0bit) (自動)変数 num 5 int 型(32bit) 5 (自動)変数 answer int 型(32bit) int 型(32bit) 関数呼び出し num=5; printf(“%d\n”, func1(5)); mainの実行は answer = n * n; 一時中断して、 関数func1に 制御(実行位置)が 移る return 実行順序 return int 型(32bit) int 型(32bit) 戻り値がint型の関数 main 戻り値がint型の関数 func1(5) 仮引数: なし 仮引数 n void 型(0bit) (自動)変数 num 5 int 型(32bit) 5 (自動)変数 answer int 型(32bit) int 型(32bit) 関数呼び出し (中断中) num=5; printf(“%d\n”, func1(5)); mainの実行は answer = n * n; 一時中断して、 関数func1に 制御(実行位置)が 移る return 実行順序 return int 型(32bit) int 型(32bit) 戻り値がint型の関数 main 戻り値がint型の関数 func1 仮引数: なし 仮引数 n void 型(0bit) (自動)変数 num 5 int 型(32bit) 5 (自動)変数 answer int 型(32bit) int 型(32bit) 関数呼び出し (中断中) num=5; printf(“%d\n”, func1(5)); mainの実行は answer = 5 * 5; 一時中断して、 関数func1に 制御(実行位置)が 移る return 実行順序 return int 型(32bit) int 型(32bit) 戻り値がint型の関数 main 戻り値がint型の関数 func1 仮引数: なし 仮引数 n void 型(0bit) (自動)変数 num 5 int 型(32bit) 5 (自動)変数 answer int 型(32bit) 25 int 型(32bit) 関数呼び出し (中断中) num=5; printf(“%d\n”, func1(5)); mainの実行は answer = 5 * 5; 一時中断して、 関数func1に 制御(実行位置)が 移る return 実行順序 return int 型(32bit) int 型(32bit) 戻り値がint型の関数 main 戻り値がint型の関数 func1 仮引数: なし 仮引数 n void 型(0bit) (自動)変数 num 5 int 型(32bit) 5 (自動)変数 answer int 型(32bit) 25 int 型(32bit) 関数呼び出し (中断中) num=5; printf(“%d\n”, func1(5)); mainの実行は 一時中断して、 関数func1に 制御(実行位置)が 移る return answerの値 25 return int 型(32bit) int 型(32bit) 戻り値がint型の関数 main 戻り値がint型の関数 func1(5) 仮引数: なし 仮引数 n void 型(0bit) (自動)変数 num int 型(32bit) 5 (自動)変数 answer int 型(32bit) num=5; printf(“%d\n”, 25); 5 25 int 型(32bit) 関数呼び出しの結果、 「値」と「制御」が 呼び出し元に戻る func1(5)=25 : 値が戻る 制御(実行位置)が 呼び出し元に戻る return 25 return int 型(32bit) int 型(32bit) 戻り値がint型の関数 main 仮引数: なし void 型(0bit) (自動)変数 num 5 int 型(32bit) num=5; printf(“%d\n”, 25); 画面に 25 と表示される return int 型(32bit) 戻り値がint型の関数 main 仮引数: なし void 型(0bit) (自動)変数 num 5 int 型(32bit) num=5; printf(“%d\n”, 25); 0 return int 型(32bit) 戻り値がint型の関数 main 仮引数: なし void 型(0bit) (自動)変数 num 5 int 型(32bit) num=5; printf(“%d\n”, 25); 0 return int 型(32bit) main()=0 : シェルに0(正常終了)が戻る → コマンド実行が終了し、 プロンプトが現れる
© Copyright 2024 ExpyDoc