Час життя змінної (глобальної або локальної) визначається за наступними правилами.

  1. Змінна, оголошена глобально (тобто поза всіма блоками), існує протягом всього часу виконання програми.
  2. Локальні змінні (тобто оголошені усередині блоку) з класом пам’яті register або auto, мають час життя тільки на період виконання того блоку, в якому вони оголошені. Якщо локальна змінна оголошена з класом пам’яті static або extern, то вона має час життя на період виконання всієї програми.

Видимість змінних і функцій в програмі визначається наступними правилами.

  1. Змінна, оголошена або визначена глобально, видима від крапки оголошення або визначення до кінця початкового файлу. Можна зробити змінну видимої і в інших початкових файлах, для чого в цих файлах слід її оголосити з класом пам’яті extern.
  2. Змінна, оголошена або визначена локально, видима від крапки оголошення або визначення до кінця поточного блоку. Така змінна називається локальною.
  3. Змінні з охоплюючих блоків, включаючи змінні оголошені на глобальному рівні, видимі у внутрішніх блоках. Цю видимість називають вкладеною. Якщо змінна, оголошена усередині блоку, має те ж ім’я, що і змінна, оголошена в охоплюючому блоці, то це різні змінні, і змінна з охоплюючого блоку у внутрішньому блоці буде невидимою.
  4. Функції з класом пам’яті static видимі тільки в початковому файлі, в якому вони визначені. Всякі інші функції видимі у всій програмі.

Мітки у функціях видимі впродовж всієї функції.

Імена формальних параметрів, оголошені в списку параметрів прототипу функції, видимі тільки від точки оголошення параметра до кінця оголошення функції.