Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Параметры подпрограмм. Параметры предназначены для передачи входных и выходных данных (переменных)

Читайте также:
  1. Анализ рисков реализации подпрограммы и описание мер управления рисками.
  2. Базовые параметры типологизации словарей
  3. Ближний вызов подпрограммы
  4. Выходные параметры
  5. Дальний вызов подпрограммы
  6. Дерево выбора подпрограмм для решения задач нелинейного программирования.
  7. Другие параметры

Параметры предназначены для передачи входных и выходных данных (переменных) подпрограммы.

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

При вызове подпрограммы происходит согласование параметров:

- порядок и типы формальных параметров в объявлении и определении подпрограммы должны совпадать с порядком и типами фактических параметров при вызове подпрограммы.

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

Передача параметров и согласование формальных и фактических параметров может осуществляться

· по значению;

· по ссылке (по адресу).

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

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

В языке С параметры всегда передаются по значению, т.е. непосредственно можно использовать только входные параметры. Передачу выходных параметров по ссылке можно реализовать с помощью указателей (ссылок, адресов). При передаче параметра по ссылке в вызове функции нужно получить его адрес с помощью операции &, например &x, а в заголовке функции тип параметра должен быть указатель, например int *x.

Упрощенное правило:

Для передачи параметра по ссылке в заголовке и теле подпрограммы перед именем параметра необходимо указывать символ *, а при вызове - символ &.

Массивы всегда передаются по ссылке. Имя массива является адресом его первого элемента, поэтому на параметры – массивы правило не распространяется (т.е. не нужны символы * и &). Размер массива рекомендуется передавать отдельным параметром. В случае со строкой (символьным массивом) размер строки обычно не передают, т.к. конец строки определяется завершающим нуль символом –‘\0’.

Пример заголовка функции с параметром массив:

float f (int n, float m[]) - вещественная функция f от целочисленного параметра n (количество элементов массива) и вещественного массива m[].

Пример вызова этой функции:

int k; float z[100], t;

t = f (k, z);


Дата добавления: 2015-07-26; просмотров: 79 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ПОДПРОГРАММЫ| Область действия переменных

mybiblioteka.su - 2015-2024 год. (0.006 сек.)