Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции. Процесс разработки приложения предполагает расчленение сложной задачи на функции






Процесс разработки приложения предполагает расчленение сложной задачи на функции. Обычно функции задаются после основной функции. Функции могут иметь несколько параметров и возвращают значение ска­ляр­ного типа, типа 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 (статическая).

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.