![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Функции. Процесс разработки приложения предполагает расчленение сложной задачи на функции
Процесс разработки приложения предполагает расчленение сложной задачи на функции. Обычно функции задаются после основной функции. Функции могут иметь несколько параметров и возвращают значение скалярного типа, типа void (отсутствие возвращаемого значения) или указатель. Возвращаемое значение формируется оператором return (п.6.2.10.2). При вызове функции значения аргументов, задаваемые на входе, должны соответствовать числу и типу параметров в описании функции. С++ поддерживает прототипы (объявления) функций. Пример функции cube, вычисляющей куб числа: Int main(int argc, char **argv) // основная функция { double cube(double x); // объявление функции cube printf(«\n2 в кубе=%.0f «, cube(2.0)); /*вывод куба числа 2*/getch(); return 0; } double cube(double x) { return x * x * x; } // тело функции cube Изменение значения аргумента в функции производится путем передачи его адреса (например, в виде & < имя переменной> (п. 6.3)). Пример передачи адреса аргумента: int main(int argc, char **argv) // основная функция { void vvod(char *s, int *v); // объявление функции адресом аргумента int *v int vozrast; vvod(«Введите возраст сотрудника», & vozrast); // вызов функции printf(«\n %d», vozrast); getch(); } // конец основной функции void vvod(char *s, int *v) {printf («\n %s», s); scanf(«%d», v); }// функция ввода Перегруженные функции задают семейство одноименных функций с различными типами параметров. Компилятор автоматически выберет нужную функцию по типам аргументов. Пример функций add сложения вещественных и целых чисел: void __fastcall TForm1:: Button1Click(TObject *Sender) // основная функция {float add(float x, float y); Label1-> Caption=add(1.2, 2.4); //вещественные числа int add (int x, int y); Label2-> Caption=add(1, 5); // целые числа } float add (float x, float y) {return x+y; } // функция сложения вешественных int add (int x, int y) {return x+y; } // функция сложения целых чисел Для таких функций лучше использовать шаблоны функций (п. 6.6.4). Классы памяти Каждая переменная и функция, описанная в программе, принадлежат к какому-либо классу памяти. Класс памяти переменной определяет время ее существования и область видимости. Класс памяти для переменной задается либо по расположению ее описания, либо при помощи специального спецификатора класса памяти, помещаемого перед обычным описанием. Класс памяти для функции всегда external, если только перед описанием функции не стоит спецификатор static. Все переменные можно отнести к одному из следующих классов памяти: automatic (автоматическая, локальная), register (регистровая), extern (внешняя), static (статическая).
|