Следующий пример программы иллюстрирует понятия блочной структуры, времени жизни и области действия переменных.
/* i определяется на внешнем уровне */
int i = 1;
/* функция main определяется на внешнем уровне */
main()
{
/* печатается 1 (значение переменной i внешнего уровня) */
printf("%d\n", i);
/* первый вложенный блок */
{
/* i переопределяется */
int i = 2, j = 3;
/* печатается 2, 3 */
printf("%d\n%d\n", i, j);
/* второй вложенный блок */
{
/* i переопределяется */
int i = 0;
/* печатается 0, 3 */
printf("%d\n%d\n, i, j);
/* конец второго вложенного блока */
}
/* печатается 2 (восстановлено определение i в охватывающем блоке) */
printf("%d\n", i);
/* конец первого вложенного блока */
}
печатается 1 (восстановлено определение внешнего уровня)*/
printf("%d\n", i);
/* конец определения функции main */
}
В этом примере показано четыре уровня области действия: самый внешний уровень и три уровня, образованных блоками. Функция printf
определена в библиотеке стандартных функций (см. раздел 12). Функция main печатает значения 1, 2, 3, 0,3,2,1.