Практикум для изучения дисциплины «Основы программирования»



Pdf көрінісі
бет48/81
Дата08.07.2020
өлшемі1,55 Mb.
#74978
түріПрактикум
1   ...   44   45   46   47   48   49   50   51   ...   81
Байланысты:
А.А. Тюгашев

ЗАМЕЧАНИЕ 
В  разных  функциях  может  фигурировать  произвольное  число  одноименных 
переменных,  хотя  они  будут  совершенно  разными,  в  том  числе  ссылаться  на 
различные ячейки памяти. 
В теле функции доступны: 
 
а) локальные переменные; 
б) переменные, перечисленные как формальные параметры; 
в) глобальные переменные.  
Глобальные переменные— переменные, объявления которых в программе 
на Си находятся вне функций, они доступны из любых функций данного 
файла исходного текста программы. Если необходимо получить доступ из 
функции, расположенной в другом файле исходного текста, используется 
ключевое слово extern. 
Еще  одним  важным  понятием  является  время  жизни  переменной. 
Локальные  переменные  функции  «живут»,  пока  выполняется  данная 
функция.  Как  правило,  место  в  памяти  для  них  резервируется  в  стеке  – 
динамической структуре данных, из которого затем по выходу из функции 
информация  удаляется.  В  отличие  от  этого,  глобальные  переменные 
размещаются в статической части памяти программного модуля и «живут» 
все  время,  пока  работает  программа.  Могут  использоваться  также 
переменные,    хранимые  в  динамически  распределяемой  памяти  («куче», 
heap) – 
они «живут» пока не освобождается занимаемая ими память. 
Как было сказано в соответствующей главе, правила написания надежных 
и легко модифицируемых программ требуют минимальных связей между 
модулями  и  минимального  использования  глобальных  переменных — 
лишь в случаях, когда это действительно обоснованно. 
После  определения  функция  может  быть  вызвана  в  произвольном  месте 
программы, ее имя может входить в выражения 
s=sum(2,2); /* вызов функции в операторе присваивания */ 


92 
 
m=n=-2; 
printf("сумма равна %d\n",sum(m,n)); /* так тоже можно */ 
Обратите  внимание  на  то,  что  во  втором  случае  в  качестве  значений 
аргументов  передаются  текущие  значения  переменных  с  именами  m  и  n. 
Эти  переменные  при  вызове  называются  фактическими  параметрами 
функции.  Что  происходит  при  обращении  к  функции?  Система  берет 
текущие значения переменных m и n, например, это будут числа –2 и –2, 
при  входе  в  функцию  sum  использует  эти  значения  для  формальных 
параметров  a  и  b,  которые  затем  используются  в  теле  функции  по  их 
именам.  При  этом  модифицировать  переменные  m  и  n  в  вызывающей 
функции  из  функции  sum  напрямую  невозможно.  Подобный  подход  при 
вызове  подпрограмм  в  языках  программирования  называется  передачей 
параметров  по  значению,  что  противопоставляется  передаче  по  ссылке
используемой, например, в Паскале и позволяющей вызванной процедуре 
изменять значения переменных вызывающей функции. 


Достарыңызбен бөлісу:
1   ...   44   45   46   47   48   49   50   51   ...   81




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет