引数(ひきすう)とは、プログラミング言語においてサブルーチン(関数・メソッド・手続き)に与える入力のことである。少なくともプログラミング業界では「いんすう」とは読まないので注意。
多くのプログラミング言語では、繰り返し使われる処理を効率的に記述するためにサブルーチンを定義できる。関数を用いることで、プログラム中に何度も出現する処理の定義を1箇所にまとめることができる。
では、あるデータに対して同じような処理を行いたい場合はどうすれば良いだろう。例えば、ある商品の消費税を計算する処理は、値段が与えられればその値段に対して行う処理(ここでは値段の値を1.05倍すること)は同じである。このように、与えられたデータに対して同じ処理を行わせたい場合には、引数を用いてサブルーチンに入力を与えることができる。
例えば、ある商品の値段を与えたら消費税を計算してくれるようなサブルーチン(関数)shouhizeiは以下のように定義できる。(以下のコードは擬似コード)
sub shouhizei(price) {
return price * 1.05
}
このように定義することで、任意の商品の値段に対して消費税を関数shouhizeiを用いて計算することが可能になる。ここでのpriceが関数shouhizeiの引数である。より正確に表現すれば、priceは関数shouhizeiの仮引数である。仮引数と対になるものとして実引数があり、これはサブルーチンに対して実際に与えられる引数のことである。例えば上記のshouhizei関数を、
で呼び出した場合、2525が実引数である。
引数の渡され方には大きく分けて2種類有る。1つが値渡し、もう1つが参照渡しである。
値渡しは、実引数の値をコピーしてサブルーチンに渡す。よって、サブルーチンの中で仮引数の値を変更しても、その変更は実引数で与えた値に反映されない。しかし、実引数で与えた変数の値そのものを変更したい場合も考えられる。その場合、サブルーチンには変数の値が格納されている場所(アドレス)を与え、サブルーチン内でその場所の値を書き換えることによって、与えられた変数の値を書き換えることができる。この最も有名な(かつ悪名高い)例がC言語におけるポインタである。
一方、参照渡しは変数の場所に関する情報をサブルーチンに渡すことで、変数の値そのものの書き換えを可能にする方法である。簡単に言えば、変数の場所の値渡しを自動的にやってくれるようなものである。
オーバーロード(多重定義)とは、引数の型や個数が異なるサブルーチンを同一の名前で定義することである。例えばサブルーチンaddを
sub add(a, b) {
return a + b
}
sub add(a, b, c) {
return a + b + c
}
のように定義すれば、addはadd(2, 3)のように2つの引数を与えた場合でも、add(2, 3, 4)のように3つの引数を与えた場合でも正しく引数の和を計算することができる。更に、引数の個数が幾つであっても受け付けるようなサブルーチンを定義できるプログラミング言語もある。そのような仕組みは可変長引数と呼ばれる。
掲示板
急上昇ワード改
最終更新:2024/12/26(木) 12:00
最終更新:2024/12/26(木) 12:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。