Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Лекция №12. ПАРАМЕТРЫ ФУНКЦИЙ

Понятие о параметрах функций

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

Формальными называются параметры, находящиеся в скобках, при объявлении прототипа функции и при ее определении, а фактическими - параметры, подставляемые на место формальных при вызове функции.

При выходе из функции используют оператор return, в том числе и при выходе по условию. Применение оператора return без указания значения вызывает завершение функции и передачу управления в вызывающую программу. Но так как у данного оператора отсутствует возвращаемое значение, в вызывающую программу никакого значения не передается.

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

Все функции, которые возвращают значения, должны содержать, по крайней мере, один оператор return, за которым следует возвращаемое зна­чение объявленного типа.

Функции также могут возвращать значения строкового типа и указатели.

Необходимо помнить о том, что функции без указания типов в языке С рассматриваются как имеющие тип int. Однако не следует пользоваться таким умолчанием при написании программ на языке С++, так как это может привести к трудно обнаруживаемым ошибкам.

Переменные, объявленные внутри функций, являются локальными по отношению к этим функциям; переменные, объявленные вне функций, включая main(), - глобальными.

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

Локальные переменные также называются автоматическими переменными, так как они создаются и разрушаются программами автоматически.

В начале работы функция выделяет память в стеке для запоминания своих локальных переменных. Эта память существует только до тех пор, пока функция активна. После возврата из функции стековая память удаляется, отбрасывая все запомненные в ней переменные. Этим обеспечивается:

1) большее по сравнению с доступной памятью суммарное пространство, занимаемое всеми локальными переменными;

2) бесконфликтное объявление одинаковых идентификаторов для локальных переменных, используемых в различных функциях одной программы.

В языке С допустимо объявление локальных переменных непосредственно в операторном блоке:

if (условие) { int i;}

Переменная i будет занимать место в памяти только в том случае, если условие оператора if окажется истинным, а область ее действия будет распространяться до закрывающей фигурной скобки оператора if.

Чаще всего объявляют локальные переменные цикла с параметром:

for (int cnt=0; cnt<100; cnt++) {/*тело цикла*/}

Локальная переменная цикла cnt существует в памяти ЭВМ, пока выполняется тело цикла.

Глобальные переменные существуют в течение всего времени работы программы. Они запоминаются в сегменте данных программы и занимают память независимо от того, нужны они или нет.

В C++ существуют регистровые переменные, которые запоминаются непосредственно в регистрах процессора. Для объявления таких переменных используют спецификатор памяти register. Регистровые переменные бывают только локальными. Регистровые переменные ускоряют работу программы, поэтому чаще всего их используют для объявления управляющих переменных циклов. Объявление регистровой переменной имеет вид: register int Var_Reg;




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 587; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.