lisp
またはscheme
のような言語では、特定のローカルスコープでのみ使用可能なlet
の変数をプログラマが定義できます。たとえば、別の関数内でのみ呼び出される関数です。Cにローカルバインディングがありますか?
C相当品はありますか?あなたは、変数「カウント」をしたい場合は
lisp
またはscheme
のような言語では、特定のローカルスコープでのみ使用可能なlet
の変数をプログラマが定義できます。たとえば、別の関数内でのみ呼び出される関数です。Cにローカルバインディングがありますか?
C相当品はありますか?あなたは、変数「カウント」をしたい場合は
Cでは、変数は、彼らがで囲まれているラッピング{}括弧の範囲に対してローカルです。これは、中に同じです。 C++およびJava。
変数が関数の外部で定義されている場合、そのモジュールに対してグローバルであり、それを使用するモジュール内の別のモジュールの変数への参照の前に 'extern'という接頭辞を追加することによって他のモジュールで参照できます。
varaibleが関数の外部で定義され、接頭辞が 'static'の場合、そのモジュールのみにグローバルです。
私がmoduleと言うとき、これは同じソースファイルに含まれるすべてを意味します。 Javaはグローバル変数をサポートしていませんが、グローバルとほぼ同じ静的クラス変数をサポートしています。
だけで、独自のスコープを持っています
void test()
{
int input; //input is usable in function test()
...
{
int count; //count only usable in scope {}
...
}
}
Cはスコープの命名に '{..}'を使います。クロック内で宣言された変数はそのブロックに対してローカルです。 – CinCout
任意のルーチンの外側で静的を使用する場合、スコープはそのファイル内にのみあります。静的宣言が関数内にある場合、その値は再入場時に*記憶されます*。それはあなたが探しているものですか? – cup
C変数はデフォルトで['auto'](http://stackoverflow.com/q/13415321/995714)であり、スコープを超えて拡大しません。 –