link: intuit №9

Наконец-то мы добрались до Функций. Посмотрим или как говорим мы белоруссы “поглядим”, что же нам скажет интуит по этому поводу

Начинается все с

Создание и использование функций

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

Из интересных моментов, я бы отметил:

  • Если тип результата не указан, то предполагается, что результат имеет тип int (что-то вообще странное);
  • В качестве результата функция не может возвращать массив (см. лекцию 13) или функцию, но может возвращать указатель на массив или функцию (т.к. я не знаю, что такое указатель, то мне интересно);
  • Класс памяти static (необязательный) ограничивает видимость функции и других внешних определений. Функция с классом памяти static невидима вне содержащего ее файла (как-то я привык к другому значению static);
  • Если в описании не указан класс памяти (см. лекцию 10) , то по умолчанию, предполагается extern (непонятных слов становится больше)

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

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

Вот так вот здесь. В другой литературе (так сразу и не вспомню)
формальный аргумент = параметр
фактический аргумент = аргумент

Синтаксис языка Си предусматривает только один способ передачи аргументов – передачу по значениям.

Возвращение значений

А ничего тут интересного я не нашел. Return возвращает значение и прерывает выполнение функции…

Локальные переменные

Нахождение адресов

В результате выполнения операции & определяется адрес ячейки памяти, которая соответствует переменной. Если age – имя переменной, то &age – ее адрес.

Указатели, первое знакомство

Указатель – некоторое символическое представление адреса. В описанном примере &age означает указатель на переменную age. (наконец-то мы добрались до указателей)

Операция косвенной адресации *

Если я правильно понял то это примерно так

Описание указателей

Спецификация типа задает тип переменной, на которую ссылается указатель, а символ звездочка ( * ) определяет саму переменную как указатель.

если входное значение необходимо функции для некоторых вычислений или действий

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

Подведем итоги по указателям

Когда за знаком & следует имя переменной, результатом операции является адрес указанной переменной.

Когда за знаком * следует указатель на переменную, результатом операции является величина, помещенная в ячейку с указанным адресом.

Функции с переменным количеством аргументов

(ой, даже страшно читать дальше)

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

Кстати, это программу у меня так и не заработала (я имею ввиду корректно)

Идея, как я понял, состоит в том, что указатели идут подряд. Но это не так (по крайней мере у меня):
почему то паратеры 6, 4 (для первого вызова) могли быть и на 5 / 10 позициях (дебажил через CLion)