C言語では値を変数に保存しておくことができます。
変数とはコンピュータのメモリ上に確保された様々な値を保存しておく場所のことで、一定のルールに従った名称を付けて扱うことができます。
ここではC言語の変数の宣言の仕方を学びます。
C言語の変数の宣言の方法
C言語の変数の宣言の方法は以下のように行います。
このように宣言することで指定した変数名でコンピュータのメモリ上に値を保存するエリアが確保されます。
変数名を付ける際のルール
C言語の変数名にはある一定のルールに則ってつける必要があります。
具体例としては
int 3hensu ; //これは× int hen-su ; //これは× int Hensu,hensu ; //Hensuとhensuは別の変数 int hensu,hensu //同一スコープ内で同じ変数名は使えない
になります。
変数のスコープ
C言語の変数には有効になる範囲(スコープ)が存在します。
スコープには大きくわけて、グローバルエリアとローカルエリアと呼ばれる2つのスコープがあります。
グローバルエリア
グローバルエリアは各関数よりも外側にある変数ですべての関数で参照可能な変数です。
但し、宣言に「static」と共に宣言された場合は同一ファイル内にある関数からのみ参照可能です。
このグローバルエリアに宣言される変数をグローバル変数と呼びます。
また、グローバル変数にはメモリ確保持に初期値として「0(0x00)」が必ず設定されます。
#include <stdio.h> int i ; //なんかの変数(グローバル変数) int main() { sub1() ; sub2() ; } int sub1() { i = 10 ; //グロバール変数なのでここでも参照可能 printf( "i=[%d]n", i ); return 0; } int sub2() { i = 20 ; //グロバール変数なのでここでも参照可能 printf( "i=[%d]n", i ); return 0; }
上記のソースを実行すると
i=10 i=20
よ表示されます。(プロトタイプ宣言等は省略しています。)
このようにグローバル変数はどの関数からも参照可能な変数になります。
ローカルエリア
ローカルエリアは各関数の内側にある変数で関数内のみ参照可能な変数です。
このローカルエリアに宣言される変数をローカル変数と呼びます。
また、ローカル変数にはメモリ確保持に初期値としては何も設定されないので、初期値を指定しないで宣言した場合は不定値がセットされていることになります。
#include <stdio.h> int main() { sub1() ; sub2() ; } int sub1() { int i ; //なんかの変数(ローカル変数) i = 10 ; //ローカル変数なので関数内のみ参照可能 printf( "i=[%d]n", i ); return 0; } int sub2() { i = 20 ; //sub1()のローカル変数なのでここでは参照できない printf( "i=[%d]n", i ); return 0; }
上記ソースをコンパイルするとsub2()の中で「iが宣言されていません」という文法エラーになり、実行モジュールは生成されません。
まとめ
このようにC言語の変数は「変数の型 変数名;」で宣言し、グローバル変数とローカル変数の2種類が存在ます。
グローバル変数とローカル変数では参照できる範囲(スコープ)が異なるので注意が必要です。
以上、C言語の変数の宣言の方法でした。