Создает область. Есть ли автоматические переменные, определенные внутри блоков? Если это так, то область действия этих переменных ограничена блоком. Это полезно для временных переменных, которые вы не хотите загрязнять остальной функцией, а также полезно при написании C89, где определения переменных должны находиться в начале блока.
Итак, вместо:
int main() {
int a = 0;
int b;
int i;
for (i = 1; i < 10; ++i) {
a += i;
}
b = a * a;
// do something with a and b
}
Вы можете иметь:
int main() {
int a = 0;
{
int i;
for (i = 1; i < 10; ++i) {
a += i;
}
}
{
int b = a * a;
// do something with a and b
}
}
Очевидно, что если вы делаете это, вы также должны спросить себя, не будут ли блоки лучше использовать в качестве отдельных функций.