スライド 1 - 横浜国立大学 富井研究室

アルゴリズムとデータ構造
補足資料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(正常終了)が戻る
→ コマンド実行が終了し、
プロンプトが現れる