Формальные параметры функций
Как уже говорилось вразделе Создание собственных функций функцию можно описать следующим образом:
тип имя ( формальные параметры )
{
действия
}
Формальные параметры функции это значения, которые передаются вфункцию. Они указываются через через запятую вкруглых скобках после имени функции. Для каждого параметра указывается тип (любой изстандартных: массивы, int, bool, datetime, double, color, string).
В функцию неможет быть передано более 64параметров.
Областью видимости формальных параметров функции является сама функция, т.е. доступ кихзначениям может быть получен только впределах этой функции.
В описании функции параметрам можно присваивать значения поумолчанию. При этом следует иметь ввиду, что все параметры, следующие запервым параметром созначением поумолчанию, должны также иметь значения поумолчанию:
int GetSomethingUseful ( int a, int b = 0, bool f = true, double r = 5.9)
{
...
}
В этом случае все или часть параметро поумолчанию можно упускать при вызове функции, авместо них автоматически будут подставлены значения поумолчанию:
- Вызов GetSomethingUseful(3,5,false) будет эквивалентен вызову GetSomethingUseful(3,5,false, 5.9).
- Вызов GetSomethingUseful(3,5)будет эквивалентен вызову GetSomethingUseful(3,5,true, 5.9).
- Вызов GetSomethingUseful(3)будет эквивалентен вызову GetSomethingUseful(3,0,true, 5.9).
При этом следует помнить, что если мыпропускаем какой-то параметр, имеющий значение поумолчанию, тоивсе последующие параметры также должны неуказываться.
Если мыимпортируем функцию издругого модуля, тотакие параметры таких функций немогут иметь значения поумолчанию.
Все, что ярассказал выше, касалось передачи параметров вфункцию позначению. Чтобы все стало ясно, давайте рассмотрим небольшой пример:
void MyFirstFunction ()
{
int a = 10;
MySecondFunction ( a );
}
void MySecondFunction ( int b )
{
b = b + 1;
Print ( b );
}
В этом примере мывызываем MySecondFunction, передавая вкачестве параметра значение переменной a (внашем случае 10). Таким образом, при вызове MySecondFunction переменной b формальному параметры функции будет присвоено значение 10,которое будет следующей строчкой увеличено наединицу ивыведено влог. Однако при этом значение переменной aвMyFirstFunction неизменится иостанется равным 10.
Существует идругой способ передачи параметров вфункцию поссылке (используя после описания типа знак амперсенда &). Рассмотрим новый пример:
void MyFirstFunction ()
{
int a = 10;
MySecondFunction ( a );
}
void MySecondFunction ( int& b )
{
b = b + 1;
Print ( b );
}
В этом примере мывызываем MySecondFunction, передавая вкачестве параметра ссылка напеременную a. Таким образом, вфункции MySecondFunction всегда, когда будет идти обращение кпеременной b,реально будет идти обращение кпеременной a.Т.е. следующей строчкой значение переменной a будет увеличено наединицу ивыведено влог. После завершения функции MySecondFunction переменная а будет равна 11.
В качестве параметров поссылке можно передавать как переменные стандартных типов (нотолько впределах одного модуля), так имассивы (как впределах одного модуля, так ивдругие модули).
Перейти к главе «
Операторы. Арифметические операции».