Добавить в корзинуПозвонить
Найти в Дзене
Old Programmer

Глобальные переменные в программировании (C/C++). Статья 1

Все ссылки на статьи и ролики моего канала Old Programmer:
Программирование. Тематическое оглавление моего Zen-канала (Old Programmer). А здесь все мои материалы по языкам C и C++. См. также мои статьи на канале Old Programmer: Глобальные переменные в языке C Что такое глобальная переменная? Это переменная доступ к которой возможен из любой точки программы. Другими словами область видимости такой переменной - вся программа. То же можно сказать и о функции. Правда, возможно, это некоторых удивит, в языке Pascal и в языке Python могут быть локальные функции, т.е. функции, определенные внутри другой функции, доступ к которым вне этой функции не возможен. Совсем другое дело язык C. Там все функции глобальны, также как переменные, определенные вне функций. Но тут есть свои особенности, о которых мы и поговорим сегодня. Дело в том, что изначально трансляция с языка C происходила в два этапа. Программа на языке C, может состоять из большого количества модулей. Разбиение на модули (моду
Оглавление

Все ссылки на статьи и ролики моего канала Old Programmer:
Программирование. Тематическое оглавление моего Zen-канала (Old Programmer). А здесь все мои материалы по языкам C и C++.

См. также мои статьи на канале Old Programmer:

Указатели в программировании(языки C/C++). Статья 1
Old Programmer15 июля 2020
О циклах в программировании (цикл for в языке C). Статья 2
Old Programmer11 июля 2020
О циклах в программировании (C++, Python). Статья 1
Old Programmer9 июля 2020
Список разделов канала Old Programmer, канала о программировании и программистах
Old Programmer27 мая 2021

Глобальные переменные в языке C

Что такое глобальная переменная? Это переменная доступ к которой возможен из любой точки программы. Другими словами область видимости такой переменной - вся программа. То же можно сказать и о функции. Правда, возможно, это некоторых удивит, в языке Pascal и в языке Python могут быть локальные функции, т.е. функции, определенные внутри другой функции, доступ к которым вне этой функции не возможен. Совсем другое дело язык C. Там все функции глобальны, также как переменные, определенные вне функций. Но тут есть свои особенности, о которых мы и поговорим сегодня.

Дело в том, что изначально трансляция с языка C происходила в два этапа.

  1. Этап 1. Компиляция - перевод модулей на языке C в объектные модули.
  2. Этап 2. Сборка (или связывание). На этом этапе собираются все объектные модули и создается исполняемый файл. Также на этом этапе подключаются объектные библиотеки.

Программа на языке C, может состоять из большого количества модулей. Разбиение на модули (модульное программирование) типичный прием, когда программа становится достаточно большой. Кстати на первом этапе могут компилироваться и модули на других языках, а потом все объектные модули собираются в один исполняемый. Только важно соблюдать такую вещь как согласование имен и вызовов. Но это совсем уже другая история и я к ней вернусь, но в одной из следующих статей.

А поскольку теория без практика суха, то сразу можно перейти к практике.

Примеры использования глобальных переменных в языке C

У нас имеется три модуля main20.c, module1.c, module2.c (смотрим ниже). В модуле main20.c располагается главная функция программы, с которой начинается ее работа. В module1.c определены глобальные переменные, которые будут использоваться в программе. В module2.c определена функция, которая будет вызываться из модуля main20.c. Кроме того, если переменная или функция определена в другом модуле, а ее нужно использовать в данном, то она должна быть объявлена с использование модификатора extern.

Но вот практически и все. Ну за исключением того, как мы все это будет транслировать. А вот так. Все очень просто. Создайте файл вот с таким содержимым, сделайте его исполняемым, откомпилируйте и получите исполняемый модуль modul20.

# получение объектных модулей
gcc -c main20.c
gcc -c modul1.c
gcc -c modul2.c
# сборка
gcc -o main20 main20.o modul1.o modul2.o

Надеюсь все было интересно. Пока! Подписываемся на мой канал Old Programmer.

Программа main20.c
Программа main20.c