検索この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(2012年11月)プログラミングにおいて、変数(へんすう、variable)とは、プログラムのソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。一人一人の人間が異なる名前によって区別されるように、一つ一つの変数も名前によって区別される。これにより、複数のデータを容易に識別することができる。変数を区別するための名前を特に識別子という。一般に、変数が表しているデータをその変数の値(あたい)という。プログラミング言語によって変数の扱い方は多少異なるので、ここでは一般的な事柄を述べる。言語によって用語の意味も異なる。宣言[編集]プログラムの中でどのような名前の変数を用いるのかを、プログラミング言語の文法にのっとって明確に示すことを変数の宣言(せんげん)という。いくつかのプログラミング言語では、変数を宣言する際にその名前だけでなくそのデータ型も指定する必要がある。これにより、各変数が扱うことのできるデータの種類を制限できる。一般に、データに対して行える処理はデータ型によって異なるので、データ型を厳密に検査することで、誤ったプログラムを書いてしまうことを防止するのに役立つ。一部のプログラミング言語では、型推論といって、プログラムで変数の型を明示しなくても、処理系が自動的に型を判断する機能がある。多くの場合、型推論は変数の宣言と代入が一度にまとめて行われることが前提となる。代入[編集]宣言した変数に対して実際にデータを関連付けることを代入(だいにゅう)という。プログラミング言語によっては、変数の宣言と代入を一度にまとめて行うことができる。変数を宣言せずにいきなり代入できる言語もあるが、これは宣言されていない変数に対して処理系が自動的に宣言を補ってくれていると考えることが出来る。ある変数に対して初めて行う代入は、特に初期化(しょきか)という。多くの手続き型言語では、変数は複数回代入をすることができる。代入を行った変数に改めて代入をすると、その変数とそれまでのデータとの関連はなくなり、新しいデータと改めて関連付けされる。関数型言語では、一つの変数には一度しか代入できないものも多い。このような言語では、宣言と初期化を一緒に行うのが一般的であり、また、一つの変数が常に同じ値を持つ(値が変化しない)ことが保証される。(参照透過性)参照[編集]その変数に代入したデータを利用することを、変数の参照(さんしょう)という。一度も代入を行っていない、つまり初期化していない変数を参照することは意味を成さず、不正である。一部のプログラミング言語では、変数を宣言した段階で、自動的に何らかのデータが変数に関連付けられる。このような言語では、初期化を明示的にプログラムしないまま変数を参照できる。スコープと寿命[編集]変数のスコープとは、変数がソースコード内のどこで使えるかを示す概念である。変数がプログラムの実行時においていつ使えるかを規定する概念が変数の寿命である。多くの場合、変数のスコープはその変数の寿命を規定する要因の一つとなる。一般に、変数はその変数に対して定められたソースコードの特定の範囲内でしか使用することができない。その変数が使用可能な範囲が、その変数のスコープである。関数の中で宣言した変数はその関数の中でのみ使用できる。これにより、関数内部の処理とは関係のないところから変数を使用されるのを防ぐことができる。(それぞれのスコープが独立しているため)異なる関数で宣言した変数に対して同じ名前を付けることもできる。多くのプログラミング言語は、一つのスコープにおいて同じ名前の変数を複数宣言することを許していない。これはもちろん、それらを名前で区別することができなくなってしまうからである。ある変数のスコープが他の変数のスコープの中に含まれている場合には変数が同じ名前を持つことを許す言語もある。この場合、内側のスコープの中では外側のスコープを持つ変数を使用することができなくなる。変数の寿命とはプログラムが実行される際にその変数がいつからいつまで存在しているかということである。多くの場合、プログラムの処理がその変数のスコープ内に入ると(その変数の値を保存するためのメモリ領域が確保されるなどして)変数が存在し始め、処理がスコープから出ると変数の存在が消えるというように、変数のスコープに合わせて寿命が決められるが、スコープとは関係なくプログラムの実行が始まったときから終わるときまでずっと存在し続けるようなものもある(前者は自動変数、後者は静的変数などと呼ばれることが多い)。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。開発者Cookieに関する声明モバイルビュ。