アルゴリズムとデータ構造 補足資料 3-1
「関数呼び出し」
横浜国立大学 理工学部 数物・電子情報系学科 富井尚志
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)
定義された 内部手続きを 順に実行する
値と制御(実行位置)を
呼び出し元に戻す
戻り値が 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;
}
戻り値が 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 から!
実行順序
戻り値が 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 から!
実行順序
戻り値が 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) 関数呼び出し
実行順序
戻り値が 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) 関数呼び出し
(中断中)
実行順序
戻り値が 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) 関数呼び出し
(中断中)
実行順序
戻り値が 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) 関数呼び出し
(中断中)
実行順序
戻り値が 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 の値
戻り値が 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 : 値が戻る
制御(実行位置)が 呼び出し元に戻る
関数呼び出しの結果、
「値」と「制御」が
呼び出し元に戻る
戻り値が int 型の関数 main
void 型 (0bit) 仮引数 : なし
(自動)変数
num 5
int 型 (32bit)
num=5;
printf(“%d\n”, 25);
return
int 型 (32bit)
画面に 25
と表示される