値渡しと参照渡しの違い
〈値渡し〉
普通の変数を呼び出して渡そうとすると、
まず呼び出し元の変数の中の値(ex.100)がコピーされて、
呼び出し先に渡される
同じ値を持った独立した変数が2つ出来るイメージ
・・・お互い独立した変数なので、
呼び出し先で渡された値を変えても(x=120に変更)
呼び出し元の変数には影響しない(x=100のまま)
〈参照渡し〉
配列(参照型)を呼び出して渡すと、
渡している配列が入っている先頭番地の情報が渡される
例えば、 呼び出し元の変数arrayの先頭番地が883番地だとすると、
呼び出し先にはarrayの中身{1,2,3}がコピーされて渡されるのではなく、
呼び出し元が指している番地情報である883番地が渡される
2つの変数が単に1つの独立した実体(この場合だと配列)実体を
矢印で指して表しているというようなイメージ
・・・両者とも同じ実体を指しているので、
呼び出し先で配列の実体を書き換えると(array={1,2,3}を{2,3,4}に変更)
呼び出し元の情報も書き換わる(array={2,3,4};)