スコープ規則(ブロック化)
 
{ ・・・ } の対応によって、プログラムをブロック化できる。
 
スコープ (または通用範囲)の規則
覗き穴・・・穴を通して何かが見える・・・それ以外は見えない
 
      スコープ規則により
ブロック内部の変数は見えない
  ↑
---------------------------
ブロック始まり {  
  +→
|
| 
  [ブロック内部の変数宣言部]
  
 
  |
|
|
|
+→ 
  [ブロック本体]
 C言語のプログラム
 
 この領域でのみ上記の変数宣言部で準備した変数が使用できる
 
ブロック終わり }  
      ---------------------------
  ↓
スコープ規則により
ブロック内部の変数は見えない
 
例)
  関数内部で準備・宣言した変数は他の関数(たとえば main 関数)から参照・代入できない
たとえば、関数を用いた以下のプログラミングは間違いである
#include <stdio.h>

main( )
{
    int x,y ;

    x = 10;
    y = 20;

    sub();

    printf("%d", z);   <-- 変数 z は参照できない
}

sub()
{
    int z;

    z = x + y;   <-- 変数 x,y は参照できない
}

 
正しくは以下のように引数・戻り値を用いて参照する必要がある
#include <stdio.h>

main( )
{
    int x,y ;

    x = 10;
    y = 20;

    printf("%d", sub(x,y) );
}

int sub(int x, int y)
{
    int z;

    z = x + y;
    return z;
}

変数には大きく2つの種類がある
スコープの規則によると・・・
入れ子になったブロックに同じ名前の変数があった場合
 
 


Kunihiro Egami <egami@egamix.com>