Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Занятие 5. Функции

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

Объявление и использование функций

Формат объявления функции

<тип результата>▬<имя функции>(<тип>▬<аргумент1>,<тип>▬<аргумент2>, . . . )

{ <код функции>}

Здесь и  далее символ ▬  при записи формата команды обозначает пробел.

Функция не всегда должна возвращать результат. Если функция не возвращает результат (процедура), в качестве типа функции указывается void.

У функция могут отсутствовать аргументы, тем не менее, скобки после названия функции все равно указываются, причем как при объявлении функции, так и при ее вызове.

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

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

В С++ допускается в начале программы указывать прототип функции, а объявление  программы переносить в конец программы. Прототипом  функции называется «шапка» с типом возвращаемого результата, именем функции и списком аргументов.

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

НЕ нашли? Не то? Что вы ищете?

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

Механизмы передачи параметров

       В C++ существуют два механизма передачи аргументов функциям: по значению и через ссылку. При передаче аргумента функции по значению при вызове функции для переменных, которые указаны ее аргументами, создаются копии, которые фактически и передаются функции. После завершения выполнения кода функции эти копии уничтожаются (выгружаются из памяти). При передаче аргументов функции по ссылке функция получает непосредственный доступ (через ссылку) к переменным, указанным аргументами функции. С практической точки зрения разница между этими механизмами заключается в том, что при передаче аргументов по значению изменить передаваемые функции аргументы в теле самой функции нельзя, а при передаче аргументов по ссылке Ї можно. По умолчанию используется механизм передачи аргументов функции по значению.

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

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

Передача указателя аргументом функции

В качестве аргументов функции могут использоваться указатели. При передаче указателя аргументом функции перед именем указателя  указывается оператор * .

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

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

Передача массива аргументом функции

Так как имя массива  является ссылкой на первый его элемент, имеется  несколько вариантов передачи массива.

Передача многомерных, и в частности двумерных,  массивов аргументами функции осуществляется по следующему принципу: указываются все размеры массива кроме первого. Такая явная индексация связана со способом интерпретации многомерных массивов в С++. Двумерный массив  Ї это массив массивов. Поэтому, как и в случае одномерного массива, первый индекс является необязательным, поскольку функции на самом деле передается ссылка на первый элемент массива (для многомерных массивов этот первый элемент сам является массивом). Все последующие индексы нужны для того, чтобы компилятор мог корректно выделить место под элементы массива.

Передача строки аргументом функции

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

Аргументы функции main()

У главного метода main() могут быть  аргументы: число параметров командной строки и массив  с текстовыми значениями этих параметров. Обычно параметры называют argc (размер массива) и  argv (символьный двумерный массив), однако это необязательно.  При этом первым и всегда присутствующим параметром является название запускаемой программы (полный путь к файлу).

Аргументы для метода main() можно не указывать, если параметры в командную строку передавать не планируется.