[БЕЗ_ЗВУКА] Продолжим говорить про функции. В предыдущем видео мы с вами сказали, что, когда мы объявляем функцию, мы должны указать тип возвращаемого значения. Давайте рассмотрим вот такой пример. Допустим, у нас есть набор слов и мы хотим вывести этот набор в консоль, и этот вывод мы хотим оформить в виде функции. Давайте ее напишем. Мы пока оставим пустое место для типа возвращаемого значения, введем название функции и передадим туда набор слов, words. Давайте реализуем эту функцию, пройдемся по всем словам и выведем все слова на экран. Собственно, вопрос: что мы должны написать в качестве типа возвращаемого значения для функции print words? По своей сути, по своему смыслу эта функция ничего не возвращает, потому что она берет набор слов и печатает его. Ей нечего вернуть и непонятно, какой тип она должна возвращать. Собственно, вот в таких ситуациях, когда функция по своему смыслу ничего не возвращает, в качестве типа функции нужно использовать специальное слово void, которое с английского, насколько я знаю, переводится как «вакуум», то есть ничего. Мы тем самым говорим: эта функция ничего не возвращает. Давайте вызовем ее и убедимся, что мы все сделали правильно. Снова передадим набор слов «воздух», «огонь, «вода», скомпилируем, запустим и увидим, что да, наши слова были выведены. Таким образом, запомните, что если ваша функция ничего не возвращает, то в качестве типа возвращаемого значения надо использовать void. Хорошо. Давайте перейдем к другой теме. Допустим, у нас есть вот такая функция, ChangeInt, которая принимает параметр x и в своем теле пишет в него значение 42. Кроме того, в функции main у нас есть переменная a, равная 5, мы вызываем ChangeInt от a и выводим значение a. Компилируем. Компилируется. Вопрос: что будет выведено в консоль? Ну, вариантов, понятно, два: либо 5, либо 42, потому что мы в a записали 5, потом передали ее в функцию ChangeInt, которая присвоила своему параметру 42, и выводим. Чтобы узнать, что будет выведено, самое простое, конечно же, запустить программу. Запустим и увидим, что было выведено 5, то есть значение переменной a внутри функции main не поменялось, несмотря на то что мы ее передали в ChangeInt, которая своему параметру присваивает 42. Этот пример призван продемонстрировать вам, что параметры функции передаются по значению, то есть в функцию передаются копии тех значений, которые переданы в нее в месте вызова, то есть копии фактических параметров функции. Давайте посмотрим, как это работает, запустив нашу программу с помощью отладчика. Итак, запускаем, программа останавливается на первой команде внутри функции main, и давайте выполним ее до момента входа в тело функции ChangeInt. Так. Вот мы выполнили команду Run to Line и строка, первая строка функции ChangeInt, подсветилась зеленым. Хорошо, давайте посмотрим, чему равна переменная x. Это видно вот здесь вверху справа. Мы видим, что x равен 5. В то же время мы можем посмотреть, чему равна переменная a внутри функции main. Для этого мы нажимаем на функцию main вот здесь вот вверху слева и можем видеть, что a также равно 5. Отлично. Выполним команду внутри функции ChangeInt. Мы выполнили и видим, что вверху справа у нас появилось число 42, выделенное желтым, то есть отладчик показывает нам, что переменная x поменялась. Мы видим, что теперь x равен 42. Чему же в этот момент равна переменная a? Снова нажимаем на функцию main и видим, что a продолжает быть равным 5, то есть x — это копия a, и, несмотря на то что x мы поменяли, a осталось равно своему прежнему значению. Ну и мы продолжаем выполнение программы и завершаем ее. Итак, подведем итоги. В этом видео вы узнали, что если ваша функция по своей сути не должна возвращать никакого значения, то в качестве типа возвращаемого значения надо использовать void. Кроме того, теперь вы знаете, что параметры функции C++ передаются по значению.