Nラボ備忘録

TAKE IT EASY

MENU

関数に値を渡す方法、「参照呼出し」・「値呼出し」・「名前呼出し」を覚えよう!【備忘録-基本情報技術者試験対策 #9】

※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。




はじめに

プログラム中で関数を使用する際、関数に値を渡す必要があります。

渡す方法には主に3種類あり、それぞれ特徴が異なります。

混同しないようイメージと結び付けて覚えやすくしているので、ぜひ読んでもらえると嬉しいです。



ちなみに私はこの参考書を使って勉強してました。

漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。
過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!

参照呼出し・値呼出し・名前呼出し

関数に値を渡す方法は3種類あり、「参照呼出し」、「値呼出し」、「名前呼出し」と呼ばれます。

それぞれの特徴に触れる前に、以下の点は覚えておいてください。

プログラム上では、「変数」、「値」、「アドレス」というのが重要になります。

「変数」の中に「値」が格納されており、その「変数」が保存されているメモリの場所を「アドレス」で指定します。

これらを頭に入れた上で、それぞれの特徴を見ていきましょう。

※ おまけ

関数とサブルーチンには注意して下さい。

プログラム中で呼び出される処理はサブルーチンと呼ばれます。厳密には違う意味合いを持っているみたいなのですが、ほとんど同じ意味なので今回は区別しません。

参照呼出し(call by reference)

参照呼出しとは、変数が格納されているメモリのアドレスを渡す方法です。

メモリのアドレスとはメモリ上の住所みたいなものです。

要するに、変数がどこにいるかを関数に教えてあげる渡し方になります。

関数はそのアドレスをたどって変数に直接アクセスし、値を上書きするため、メモリ上に格納されている変数の値も変わってしまいます

値呼出し(call by value)

値呼出しとは、変数の値をコピーして渡す方法です。

渡された値は関数の中でのみ使うことができ、関数内で呼び出されてきた(コピーされた)値は、関数内部の別の変数に格納され、メモリ上の新しい領域に保存されるため、コピー元の変数に影響は与えません

名前呼出し(call by name)

名前呼出しとは、変数名を指定し、関数に未評価の式を渡す方法です。

「評価」とは、式の保持している内容が「確定」することです。すなわち未評価の式とは、まだ中身の内容が確定していないことを意味します。

変数とはあくまでも「入れ物」にすぎませんからね。中身が確定するかどうか、どう変わるかが重要なわけです。

未評価の式の名称(名前)を渡し、関数内部で必要になった場合、評価されて値が確定します。

この呼出し方法も変数の中身が変わってしまいます

最後に・・・これだけは覚えよう!

今回は関数に値を渡す方法についてまとめました。

Point

  • 参照呼出し:変数が保存されている「アドレス」を渡す方法
  • 値呼出し:変数に格納されている「値」をコピーして渡す方法
  • 名前呼出し:変数を「名前」で指定して渡す方法


重要なのは、「値呼出し」の場合、元の変数に影響を与えないということです。

それぞれの特徴と、「値呼出し」の場合は元の変数の内容は変わらない、これらを必ず覚えておきましょう。

目指せ試験合格!

前回まとめた記事も読んでもらえると嬉しいです!

nlab-notebook.com