русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Локальные и глобальные переменные

Одна из сильных сторон языка С заключается в возможности управления мелкими деталями программы. Примером подобного управления служат классы памяти – они дают возможность определить, с какими функциями связаны какие переменные и как долго переменная сохраняется в программе.

Каждая из переменных программы имеет определенный тип. Кроме того, каждая переменная имеет определенный класс памяти. Для описания классов памяти существует 4 ключевых слова: extern (внешний) - глобальный, auto (автоматический) - локальный, static (статический) и register (регистровый).

В отличие от локальных, глобальные переменные определяются вне тела какой-либо функции и «видны» сразу нескольким функциям. Исходный текст программы можно хранить в нескольких файлах. Эти части каждый раз транслировать вместе нет никакой необходимости. Ранее скомпилированные программы можно загружать из библиотек.

Рассмотрим пример.

#include <stdio.h>

#include <conio.h>

int conclusion();

char Answer; // Глобальная переменная

//-----------------------------------------------

void main()

{

printf ("\nWhether you can swim?? ('Y/N')");

do {

Answer = getche();

} while(!conclusion());

}

//-----------------------------------------------

int conclusion()

{

int retcode;

switch(Answer)

{

case 'Y':

case 'y': retcode = 1;

printf ("\nOk!\n");

break;

case 'N':

case 'n': retcode = 1;

printf ("\nBad!\n");

break;

default: retcode = 0;

printf ("\nThe answer is not identified! Repeat, please!\n");

}

return retcode;

}

В этом случае переменная Answer является внешней переменной и может быть использована в любой из функций.

Объявленные внутри функции переменные считаются принадлежащими к классу auto, если не указано иначе.

Формальные аргументы для функций принадлежат к классу auto, но можно задать для них класс register.

Класс памяти переменной определяется местом ее описания и ключевым словом, если оно используется. Класс памяти определяет три условия:

1. От него зависит, какие функции имеют доступ к переменной. Если фрагмент кода может использовать определенную переменную, говорят, что переменная видима в данном разделе. Доступность переменной различным частям программы задает ее область видимости.

2. В каком количестве мест одна и та же переменная может объявляться. Это свойство называется связыванием переменной.

3. Длительность существования переменной в памяти – продолжительность хранения.

Переменная может иметь одну из трех областей видимости (действия):

1. В пределах файла (модуля) - доступна от точки определения до конца файла, содержащего определение. Например, переменная Answer из предыдущего примера.

2. В пределах блока - доступна от точки определения, до конца блока, содержащего определение. Использовавшиеся до сих пор локальные переменные, включая формальные аргументы функций, имеют область видимости в пределах блока.

3. В пределах прототипа функции - применима к именам переменных, используемым в прототипах функций, например

double Oper (double Argument);

Переменная может связываться:

1. внешним образом (может использоваться в любом месте программы, включающей несколько модулей (файлов);

2. внутренним образом (может использоваться в любом месте единственного файла);

3. не связываться (используется только в блоке, где она описана).

Переменная может иметь продолжительность хранения:

1. статическую (существует на протяжении выполнения программы)

2. автоматическую (гарантированно существует лишь во время выполнения того блока, в котором она описана). Она создается в момент начала выполнения блока и ликвидируется по завершению его работы.

Внешние переменные (подобно Answer) имеют статическую продолжительность хранения.

Просмотров: 523


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.