第4回放送授業 5 サブルーチン 5.1 サブルーチンとは # 呼び出し側プログラム int x = 5; int y = 3; int z; z = add(x, y); print z; exit; # サブルーチン int add(int u, int v) { int w; w = u + v; return w; # 戻り値 } • サブルーチン、サブプログラム – C: 関数、void 関数 – Pascal: 関数、宣言 • 呼び出し(call) • 戻り(return)、戻り値(return value) 5.2 引数と戻り値 • 引数(argument) 実引数(real argument) 仮引数(dummy argument) • 値渡し(call by value) • 大域変数(global variable) • 参照渡し(call by reference) • 変数: int x; • 変数のアドレス: &x • ポインタ: アドレスを代入できる変数 int* p_x; p_x = &x; • *p_x で x の内容を見ることができる x 5 p_x ● # 呼び出し側プログラム int x = 5; int y = 3; swap(&x, &y); print x, y; exit; # サブルーチン void swap(int * p_u, int * p_v) { int w; w = *p_u; *p_u = *p_v; *p_v = w; } 5 サブルーチン 5.3 実装 実装で考慮すべきこと • 共用情報: &仮引数、 戻り番地、&戻り値 • 呼び出し側に記憶: 戻り値 • サブルーチン側に記録: 仮引数 • 各ルーチンでの処理とジャンプ 5.4 動的メモリー確保 動的メモリーの種類 heap • ヒープ領域(heap area) 確保した人が責任を持って解放する • スタック領域(stack area) 確保した人が責任を持って解放する push、pop stack
© Copyright 2024 ExpyDoc