工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C - スコープ ルール

任意のプログラミングのスコープは、定義された変数が存在することができ、その変数を超えてアクセスできないプログラムの領域です。 C プログラミング言語で変数を宣言できる場所は 3 つあります −

ローカルとは何かを理解しましょう そしてグローバル 変数、および正式 パラメータ。

ローカル変数

関数やブロック内で宣言された変数は、ローカル変数と呼ばれます。それらは、その関数またはコード ブロック内にあるステートメントでのみ使用できます。ローカル変数は、それ自体の外部の関数には認識されません。次の例は、ローカル変数の使用方法を示しています。ここで、すべての変数 a、b、c は main() 関数に対してローカルです。

ライブデモ
#include <stdio.h>
 
int main () {

  /* local variable declaration */
  int a, b;
  int c;
 
  /* actual initialization */
  a = 10;
  b = 20;
  c = a + b;
 
  printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
 
  return 0;
}

グローバル変数

グローバル変数は関数の外で、通常はプログラムの上で定義されます。グローバル変数は、プログラムの有効期間を通じて値を保持し、プログラム用に定義された任意の関数内でアクセスできます。

グローバル変数は、どの関数からもアクセスできます。つまり、グローバル変数は、宣言後にプログラム全体で使用できます。次のプログラムは、グローバル変数がプログラムでどのように使用されるかを示しています。

ライブデモ
#include <stdio.h>
 
/* global variable declaration */
int g;
 
int main () {

  /* local variable declaration */
  int a, b;
 
  /* actual initialization */
  a = 10;
  b = 20;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
 
  return 0;
}

プログラムはローカル変数とグローバル変数に同じ名前を付けることができますが、関数内のローカル変数の値が優先されます。ここに例があります-

ライブデモ
#include <stdio.h>
 
/* global variable declaration */
int g = 20;
 
int main () {

  /* local variable declaration */
  int g = 10;
 
  printf ("value of g = %d\n",  g);
 
  return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

value of g = 10

仮パラメータ

仮パラメータは、関数内でローカル変数として扱われ、グローバル変数よりも優先されます。以下は例です-

ライブデモ
#include <stdio.h>
 
/* global variable declaration */
int a = 20;
 
int main () {

  /* local variable declaration in main function */
  int a = 10;
  int b = 20;
  int c = 0;

  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);

  return 0;
}

/* function to add two integers */
int sum(int a, int b) {

   printf ("value of a in sum() = %d\n",  a);
   printf ("value of b in sum() = %d\n",  b);

   return a + b;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

ローカル変数とグローバル変数の初期化

ローカル変数が定義されている場合、システムによって初期化されないため、自分で初期化する必要があります。グローバル変数は、次のように定義すると、システムによって自動的に初期化されます −

データ型 初期デフォルト値
整数 0
文字 '\0'
フロート 0
ダブル 0
ポインタ NULL

変数を適切に初期化することは、適切なプログラミング方法です。そうしないと、初期化されていない変数が、そのメモリ位置で既に利用可能なガベージ値を使用するため、プログラムが予期しない結果を引き起こす可能性があります。


C言語

  1. 直列回路規則
  2. 並列回路ルール
  3. デリバティブのルール
  4. 不定積分の規則
  5. C# 変数と (プリミティブ) データ型
  6. C# 変数のスコープ
  7. C++ の変数、リテラル、および定数
  8. C の変数、定数、およびリテラル
  9. C ストレージ クラス
  10. Java 変数とリテラル
  11. Verilog タイムスケール スコープ