3.21 ブロック
ブロックとは、 { } で囲まれた領域である。ブロックは if 文や for 文などでよく使われるが、単独でも使用可能である。 ブロックがあるとスタック上にデータフレームが新たに作られるので、ブロック内でローカルな変数を使うことができる。 for 文の () 内で宣言した変数もブロック内のローカル変数となる。
次の例はブロック内外の同じ名前の変数は別のメモリに割り当てられるため、それぞれの値は影響を受けない例である。
#include <stdio.h>
void main() {
// main 直下の i を定義
int i = 0;
// 単独のブロック
{
int i = 1;
printf("i in the block = %d\n", i);
}
printf("i = %d\n", i); // ブロック内の i は別のメモリ上にあるので main 直下の i は影響を受けない。
// for 文のブロック
for (int i = 0; i < 3; i++) { // for 文のカッコ内の i はブロック内の変数になる。
printf("for i = %d\n", i);
}
printf("i = %d\n", i); // main 直下の i は for 文のブロックの影響を受けない。
}
実行例
$ ./bin/block i in the block = 1 i = 0 for i = 0 for i = 1 for i = 2 i = 0 $