2016-07-01 6 views
-1

lispまたはschemeのような言語では、特定のローカルスコープでのみ使用可能なletの変数をプログラマが定義できます。たとえば、別の関数内でのみ呼び出される関数です。Cにローカルバインディングがありますか?

C相当品はありますか?あなたは、変数「カウント」をしたい場合は

+2

Cはスコープの命名に '{..}'を使います。クロック内で宣言された変数はそのブロックに対してローカルです。 – CinCout

+0

任意のルーチンの外側で静的を使用する場合、スコープはそのファイル内にのみあります。静的宣言が関数内にある場合、その値は再入場時に*記憶されます*。それはあなたが探しているものですか? – cup

+0

C変数はデフォルトで['auto'](http://stackoverflow.com/q/13415321/995714)であり、スコープを超えて拡大しません。 –

答えて

1

Cでは、変数は、彼らがで囲まれているラッピング{}括弧の範囲に対してローカルです。これは、中に同じです。 C++およびJava。

変数が関数の外部で定義されている場合、そのモジュールに対してグローバルであり、それを使用するモジュール内の別のモジュールの変数への参照の前に 'extern'という接頭辞を追加することによって他のモジュールで参照できます。

varaibleが関数の外部で定義され、接頭辞が 'static'の場合、そのモジュールのみにグローバルです。

私がmoduleと言うとき、これは同じソースファイルに含まれるすべてを意味します。 Javaはグローバル変数をサポートしていませんが、グローバルとほぼ同じ静的クラス変数をサポートしています。

-1

だけで、独自のスコープを持っています

void test() 
{ 

    int input; //input is usable in function test() 
    ... 

    { 
     int count; //count only usable in scope {} 
     ... 
    } 
} 
関連する問題