а саме "extern" дозволяє використовувати змінну, оголошену в іншому файлі, а "static" обмежує область дії змінної поточним файлом.
Внутрішні статичні змінні – це ті, які оголошені всередині функції. Статична змінна ініціалізується лише один раз під час компіляції програми. Він більше ніколи не ініціалізується. Зовнішня статична змінна оголошується поза цією програмою.
Зовнішні статичні змінні подібні до глобальних змінних. Видимість. Внутрішні статичні змінні доступні лише в їхній конкретній функції. Зовнішні статичні змінні є доступні лише з файлу їх декларації.
У C використовується ключове слово extern щоб оголосити змінну як глобальну змінну, щоб змінна, оголошена в іншій області того самого файлу або іншого файлу, була доступна з будь-якого місця в програмі. Змінні або функції, оголошені за допомогою ключового слова extern у C, будуть пов’язані зовні (зовнішнє зв’язування).
До них неможливо отримати доступ з будь-якого іншого файлу. Таким чином, префікси « зовнішній » і « статичний » не можна використовувати в одній декларації.