プログラミングにおけるスコープについて

概要

スコープとは、ざっくりいうと変数の適用範囲のことである。
以下に例を示す。

int main(void){
	int a = 0;
}

上記の変数aはmain関数のスコープにあるという。

ifを使用した場合は以下のとおりである。

int main(void){
	int a = 0;//これはmain関数のスコープ
	if(a == 0){
		int b = 1;//これはifのスコープ
	}
	else{
		printf("b = %d",b);//これはelseのスコープ
	}
	printf("b = %d",b);
}

if内のスコープで宣言された変数bは、else句内では使用できない。
反対に、else句内で宣言された変数はif内で使用できない。

関数の場合でもこれは当てはまる。
以下にコード例を示す。

int sum(int a, int b){
	return a + b;
}
 
int main(void){
	int a = 2;
	int b = 3;
	printf("%d + %d = %d", a1, b1, sum(a, a));
}

この例ではsum関数main関数で同じ変数名を使用しているが、スコープが違うのでエラーは発生しない。

このスコープを厳格にしている言語にRustが存在する。

所有権について 借用について