Shammer's Philosophy

My private adversaria

値呼び出しと参照呼び出し

値呼び出しと参照呼び出し。これはJavaでも散々やった。
どのプログラム言語にもあるのかな・・・
Cでもポインタをやる前にこれを抑えておく必要がある。

まず、値呼び出しとは、別の関数にパラメータを渡したときにそのパラメータがコピーされるということ。
つまり、別の関数の中で値を変更してしまっても呼び出しもとの値は何も変化しない、という意味。
逆に参照呼び出しの場合は、別の関数で値が変更されれば呼び出しもとでも値が変化している、ということ。
C言語の場合は、Java と異なり基本はすべて値渡しになる。
そして、呼び出しもとにもそれを反映させたい場合はポインタを使わないといけない。
多くの人が挫折していくポインタだが自分に克服できるか?
ちょっと詳しい人に聞いたところ、ポインタと一言で言っていてもその使い方はいくつかあるらしい。
それぞれの詳しい部分については今は保留。
とりあえず、C言語で関数を使う場合は基本的には値渡しになる、という点は抑えておく。
Java は参照渡しが基本だったがここは違うようだ。