КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Объявление и определение функций
Функции
- Общая форма определения функции такова: возвращаемыйТип имяФункции(<список параметров>) // обязателен тип возвращаемого значения { < объявление данных >
< тело функции> return возвращаемоеЗначение; // - если возвращаемыйТип не void }
- Выход из функции осуществляется по оператору return. Void-функции могут не возвращать значения.
Список параметров: [const] тип1 параметр1, [const] тип2 параметр2,...
- Ключевое слово const предохраняет передаваемые по ссылке аргументы от случайного изменения.
Программа USERINFO.CPP иллюстрирует использование модификатора // const в списке параметров */ struct userInfo { int age; char name[150]; }; void processUserInfo(/*const*/ userInfo &ui) // при снятии комментария будет сообщение об ошибке, // поскольку модификатор const запрещает изменение параметра { if (ui.age < 18) { cout << "Значение параметра меньше 18" << endl; return; } if (ui.age < 21) ui.age = 21; } /* Если функция вызывается до своего определения, обязательно должен быть задан прототип функции. Общая форма объявления функции: возврТип имяФункции(<список параметров>); При объявлении функции имена параметров могут быть опущены. - Передача аргумента по ссылке позволяет функции изменять значение переданного аргумента и экономит память, так как при этом не создается локальная копия аргумента: [const] тип1& параметр1, [const] тип2& параметр2,... void foo(int &); // - объявление функции - это ее прототип int main() { int value = 5; foo(value); cout << value << endl; return 0; } void foo(int &parm) // - определение функции вызов параметра по ссылке { ++parm; } /* Результаты: */
void foo(int *); // пердача указателя int main() { int value = 5; foo(&value); // передается адрес cout << value << endl; getch(); foo(&value); cout << value << endl; getch(); return 0; } void foo(int* parm) { ++*parm; // параметр - указатель } /* Результаты:
- Локальные переменные и константы существуют и действуют только в теле данной функции, где они объявлены. Объявление локальных переменных подобно объявлению глобальных переменных.
Программа LOCAL.CPP знакомит с понятием локальной переменной - Ключевое слово static позволяет объявить переменную как статическую. Статическая переменная является локальной переменной, но сохраняет свое значение между вызовами функции. Обычно статические переменные инициализируются. Начальные значения присваиваются перед первым вызовом функции, в которой определена статическая переменная.
Программа STATIC.CPP знакомит с понятием статической локальной переменной - Макроопределения позволяют вам вводить компактные псевдо-функции, принимающие любые типы данных, поскольку компилятор не выполняет в этом случае проверку типов: #define min(n1, n2) (((n1) < (n2))? (n1): (n2)) #define max(n1, n2) (((n1) > (n2))? (n1): (n2)) double num1 = 50, num2 = 5, rslt; rslt = min(num1 / 2, num2 * 2);
- При объявлении функции с модификатором inline компилятор заменяет вызов функции ее телом. В этом смысле эти функции похожи на макросы. Отличие состоит в том, что встроенные функции выполняют проверку типов данных. Программа INLINE.CPP, иллюстрирующая применение встроенной функции - Используя аргументы по умолчанию для некоторых параметров, при вызове функции вы можете не задавать аргументы для этих параметров; тогда им автоматически будут присваиваться значения по умолчанию. Программа DEFARGS.CPP, иллюстрирующая применение аргументов по умолчанию - Рекурсивными называются функции, которые вызывают сами себя. Количество рекурсивных вызовов должно быть ограничено, чтобы не столкнуться с проблемой нехватки памяти. По этой причине каждая рекурсивная функция должна выполнять проверку условия на окончание рекурсии. Пример программы FACTOR.CPP, использующей рекурсивную функцию - Перегрузка функций позволяет вам иметь несколько функций с одним именем, но с разными списками аргументов (список аргументов еще называется сигнатурой функции). Тип возвращаемого функцией значения не является частью сигнатуры. Программа OVERLOAD.CPP, иллюстрирующая перегрузку функции
Дата добавления: 2014-01-05; Просмотров: 327; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |