![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Процедуры и функции в языке Си. Вызов в программах. Формальные и фактические параметры. Соответствие между параметрами.Примеры.
Ответ: Процедура – подпрограмма, которая получает передаваемые ей параметры и выполняет необходимые действия. имя_функции(список_параметров) Функция – отличается от процедуры тем, что дополнительно всегда возвращает одно результирующее значение. тип имя_функции(список_параметров) Т.к. функция возвращает значение, то ее вызов может рассматриваться как выражение и может быть использован в других выражениях (математических, логических и т.п.): a = b + 2 * foo(c); Вызовфункции Синтаксис вызова функции: обозначение_функции(список_фактических_параметров) Где: обозначение_функции – имя_функции. список_фактических_параметров – список выражений, количество, тип и порядок следования которых соответствуют списку формальныхпараметров функции. Порядок вычисления значений фактических параметров перед вызовом функции (в т.ч. преобразования типов) неопределен. Объявление функции Объявление (declaration) функции – предварительное описание функции (прототип/сигнатура функции) Прототип функции определяет: · Тип возвращаемого значения. · Тип и число аргументов. Прототип функции нужен для того, чтобы компилятор мог генерировать корректный код для вызова функции и обработки возвращаемых данных. Синтаксис объявления функции: тип имя_функции(список_параметров) Прототип функции обязателен если: · Вызов функции встречается в программе раньше по тексту, чем ее определение. · Функция должна вызываться из других модулей (в этом случае прототип помещается в h-файл).
Объявление и определение функции должны иметь одинаковое количество и типы параметров и возвращаемого значения. Имена параметров могут отличаться (в объявлении имена могут быть опущены, в любом случае компилятор их игнорирует). // прототип для func1 обязателен func1 (char d, int y); // прототип для func2 не обязателен // можносразуопределение int func2(char symb, int shft) { return (int)symb - shft; } int main(void) { char a; int b, c; c = func1(a, b); c = func2(a, b); return 0; } int func1(char symb, int shft) { return (int)symb + shft; } Формальные и фактические параметры · Формальные параметры существуют в прототипе и теле определения функции. Они доступны внутри функции как локальные переменные. · Фактические параметры существуют в основной программе (вызывающей функции). Они указываются при вызове функции на месте формальных. В момент вызова функции значения фактических параметров присваиваются формальным. Имена формальных и фактических параметров могут совпадать. intfoo(inta, intb) { // привходе a = 1, b=2 a = a + b; } int main(void) { float z; z = foo(1, 2.75); return 0; } Количество и тип фактических параметров должны точно совпадать с количеством и типом формальных параметров. Причем, они соответствуют друг другу в порядке указания. Процедуры и функции в языке Си. Параметры-переменные, параметры-значения. Примеры. Ответ: Процедура – подпрограмма, которая получает передаваемые ей параметры и выполняет необходимые действия. имя_функции(список_параметров) Функция – отличается от процедуры тем, что дополнительно всегда возвращает одно результирующее значение. тип имя_функции(список_параметров) Синтаксис определения (definition) функции: тип имя(список_параметров) { тело функции } Где: · тип – тип возвращаемого значения. Особые случаи: o void – нет возвращаемого значения (т.е. функция – эквивалент процедуры); o тип опущен – по умолчанию предполагается тип int · список_параметров – список формальных параметров (возможно пустой) разделенных запятыми, каждый элемент которого имеет вид: тип имя_параметра Примеры:
Параметры-переменные – параметры, служащие для возвращения результатов в основную программу. Параметры-значение – параметры, служащие для передачи данных из программы в подпрограмму. В каких случаях использовать параметры значения, а в каких - параметры-переменные: Как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме? · Если параметр определен как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме. · Если же параметр определен как параметр-переменная, то при вызове подпрограммы передается сама переменная, а не ее копия. Любые возможные изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра, в то время как изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе. Описание всех формальных параметров как параметров-переменных нежелательно по двум причинам. · Это исключает возможность вызова подпрограммы с фактическими параметрами в виде выражений, что делает программу менее компактной. · В подпрограмме возможно случайное использование формального параметра, например, для временного хранения промежуточного результата, т.е. всегда существует опасность непреднамеренно «испортить» фактическую переменную. 20.Глобальные и локальные переменные в языке Си. Видимость объектов.Примеры. Ответ: Глобальные переменные · Используются для описания данных, которые должны быть доступны в нескольких функциях, модулях. · Как правило - описываются вне блоков (вначале модуля). · Существуют все время исполнения программы. · Главная проблема: сложность контроля за изменением данных (возможно в любых точках программы). Локальные переменные · Используются для временного хранения данных (внутри блока, функции). · Описываются внутри блока · Уничтожаются при выходе из блока · Не рекомендуются при описании неизменяемых значений (констант)
Область видимости - часть текста программы, в которой может быть использован данный объект. Область видимости имени начинается в точке объявления (сразу после объявителя, но перед инициализатором). Видимость переменных и функций в программе определяется следующими правилами: · Переменная, объявленная или определенная глобально, видима от точки объявления или определения до конца исходного файла. · Переменная, объявленная или определенная локально, видима от точки объявления или определения до конца текущего блока. · Переменные из объемлющих блоков, включая переменные объявленные на глобальном уровне, видимы во внутренних блоках ("вложенная видимость"). · Функции с классом памяти static видимы только в исходном файле, в котором они определены. Всякие другие функции видимы во всей программе. |
||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 815. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |