値渡し
書き写してから作業
かしこい人はすでに気づいていたかもしれないけれど、引数は変数みたいに変更できちゃう。
// トリッキーに階乗を計算
int fraction(int n) {
int fraction = 1;
for (; 1 < n; --n) { fraction *= n; }
return fraction;
}
でも、変更しても外の変数の値は変わらない。
これは、変数の中の値だけを渡しているから。
void substitute2(int var) {
var = 2; // は?
}
int main() {
int box = 0;
substitute2(box);
std::cout << box; // たしかみてみろ!
}
こういう挙動を 値渡し っていう。
引数に渡されるのは変数そのものじゃないので、変なコードを書かないようにね。
変数のようなものを引数に渡す方法は次の章でやるよ。
じゃあ戻り値も値が渡されているのかと思うだろうけど、こっちは戻り値が使われるところに直接代入されている。そのほうが効率いいんだってさ。