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

Определение функции. Передача аргументов и возврат значения по значению, ссылке и указателю. Аргументы по умолчанию. Константы аргументов функции.

Структура программы. Директивы. Переменные и константы. | Типы данных. Преобразования типов. | Циклы и ветвления | Синтаксис определения структуры, структурной переменной. Доступ к полям структуры, присвоение структурных переменных. | Область видимости и класс памяти. | Объявление и инициализация одномерного и двумерного массивов. Работа с элементами массива через указатель. | Принципы ООП. Инкапсуляция. Наследование. Полиморфизм. | Конструкторы и деструкторы. Конструкторы копирования по умолчанию. | Объекты как аргументы методов и доступ к их числам. | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). |


Читайте также:
  1. Attribute – определение
  2. B)& Решение, определение, постановление и судебный приказ
  3. B, Выберите для выделенных в тексте А слов правильные значения.
  4. Converting values Преобразование значения
  5. Creating constants Создание константы
  6. Defining and instantiating classes Определение и создание экземпляра классы
  7. Defining functions Определение функции

Рассмотрим ф-ию, ее определение выглядит следующим образом:

void starline() // заголовок функции

{

for(int j=0; j<45; j++) // тело функции

cout << '*';

cout << endl;

}

Определение ф-ии состоит из заголовка и тела ф-ии. Тело ф-ии состоит из последовательности операторов. Заголовок должен соответствовать ее прототипу: имя ф-ии и тип возвращаемого ей значения должны совпадать; кроме того, аргументы ф-ии, если есть, должны иметь теже типы и следования в том же порядке, в каком они указаны в прототипе. Когда происходит вызов ф-ии, прог-а передает управление первому оператору тела ф-ии. Затем исполняются операторы, находящиеся в теле ф-ии, и когда достигается заключающая фигурная скобка, управление передается обратно вызывающей прог-е.

Передача аргументов и возврат значения по значению

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

Тип возвращаемого значения указывается перед именем ф-ии при объявлении и определении. Пр.: float lbstokg (float). Первое слово float означает, что ф-ия возвращает значение типа float, а слово float, заключенное в скобках, указывает на наличие у ф-ии одного аргумента этого типа. Возвращение прог-е переменной осуществляется с помощью оператора return. Он возвращает только один аргумент.

Ссылка является псевдонимом, или альтернативным именем переменной. Важное применение ссылок: передача аргументов в ф-ию. Ф-ии передается ссылка на переменную(адрес.)

Пр.: void intfrac(float, float&, float&);

Аргументы, передаваемые по ссылке, обозначаются &. При вызове ф-ии амперсанты отсутствуют.

Рассмотрим ф-ию:

void centimize (double*);

Ф-ия объявлена использующей параметр как указатель на double. Когда ф-ия main() вызывает ф-ию, она передает в качестве аргумента адрес переменной: centimize (&var). Т.к. ф-ия получает адрес, то она может использовать операцию разыменования (*а) для доступа к значению, расположенного по адресу. Передача указателя в ф-ию в качестве аргумента похожа на передачу по ссылке. Они обе позволяют переменной вызывающей прог-ы быть измененной в ф-ии.

Аргументы по умолчанию

Рассмотрим программу:

#include <iostream>

using namespace std;

void repchar(char='*', int=45); // прототип с аргументами по умолчанию

int main()

{

repchar(); // печатает символ '*' 45 раз

repchar('='); // печатает символ '=' 45 раз

repchar('+', 30); // печатает символ '+' 30 раз

return 0;

}

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

void repchar(char ch, int n) // при необходимости будут

{ // использоваться значения по умолчанию

for(int j=0; j<n; j++) // цикл n раз

cout << ch; // вывод ch

cout << endl;

}

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

Рассмотрим прототип ф-ии:

// демонстрирует константные аргументы функций

void aFunc(int& a, const int& b); // прототип функции

int main()

{

int alpha = 7;

int beta = 11;

aFunc(alpha, beta);

return 0;

}

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

void aFunc(int& a, const int& b) // определение функции

{ a = 107; // корректно

b = 111; // ошибка при изменении конст. аргумента

}

Любая попытка изменить значение beta приведет к ошибке. Многие библиотечные ф-ии используют константные аргументы.

 


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


<== предыдущая страница | следующая страница ==>
Синтаксис определения, инициализация указателя на структуру. Работа с полями структуры через указатели.| Перегруженные функции. Встроенные функции. Рекурсивные функции.

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