|
Программирование >> Перегруженные имена функций и идентификаторы
В заголовке составного оператора, формирующего тело оператора switch, могут появиться объявления, но инициализаторы, включенные в объявления, не будут выполнены. Назначение оператора switch состоит в том, чтобы передать управление непосредственно на выполняемый оператор внутри тела, обойдя строки, которые содержат инициализацию. Пример: /***.....* example 1 *.....***/ switch (c) case A: capa++; case a: lettera++; default: total++; Множественные метки Оператор тела switch может быть помечен множественными метками, как показано в следующем примере: case a: case b: case c: case d: case e: case f: hexcvt (c); Хотя любой оператор внутри тела оператора switch может быть помечен, однако не требуется оператора, чтобы появилась метка. Операторы без меток могут быть смешаны с помеченными операторами. Следует помнить, однако, что если switch оператор передал управление одному из операторов своего тела, то все следующие за ним операторы в блоке выполняются, не обращая внимания на свои метки. Оператор while Синтаксис: while (<expression>) <statement> Тело оператора while выполняется нуль или более раз до тех пор, пока выражение <expression> станет ложным (равным нулю). Вначале вычисляется выражение <expression>. Если <expression> изначально ложно, то тело оператора while не выполняется и управление передается на следующий оператор программы. Если <expression> является истиной (не нуль), то выполняется тело оператора. Перед каждым следующим выполнением тела оператора <expression> перевычисляется. Повторение выполнения тела оператора происходит до тех пор, пока <expression> остается истинным. Оператор while может также завершиться при выполнении операторов break, goto, return внутри тела while. Пример: while (i>=0) string1 [i] = string2 [i]; i--; В вышеприведенном примере копируются символы из string2 в stringl. Если i больше или равно нулю, то string2[i] присваивается индексной переменной string1[i] и i декрементируется. Когда i становится меньше нуля, то выполнение оператора while завершается. Функции Функция - это независимая совокупность объявлений и операторов, обычно предназначенная для выполнения определенной задачи. Программы на Си состоят по крайней мере из одной функции main, но могут содержать и больше функций. Определение функции специфицирует имя функции, ее формальные параметры, объявления и операторы, которые определяют ее действия. В определении функции может быть задан также тип возврата и ее класс памяти. В объявлении задается имя, тип возврата и класс памяти функции, чье явное определение произведено в другой части программы. В объявлении функции могут быть также специфицированы число и типы аргументов функции. Это позволяет компилятору сравнить типы действительных аргументов и формальных параметров функции. Объявления не обязательны для функций, возвращающих величины типа int. Чтобы обеспечить корректное обращение при других типах возвратов, необходимо объявить функцию перед ее вызовом. Вызов функции передает управление из вызывающей функции к вызванной. Действительные аргументы, если они есть, передаются по значению в вызванную функцию. При выполнении оператора return в вызванной функции управление и, возможно, значение возврата передаются в вызывающую функцию. Определение функции Определение функции специфицирует имя, формальные параметры и тело функции. Оно может также определять тип возврата и класс памяти функции. Синтаксис определения функции следующий: [<sc-specifier>][<type-specifier>]<declarator> ([<parameter-list>]) [<parameter-declarations>] <function-body> Спецификатор класса памяти <sc-specifier> задает класс памяти функции, который может быть или static или extern. Спецификатор типа <type-specifier> и декларатор <declaration> специфицируют тип возврата и имя функции. Список параметров <parameter-list> - это список (возможно пустой) формальных параметров, которые используются функцией. Объявления параметров <parameter-declarations> задают типы формальных параметров. Тело функции <function-body> - это составной оператор, содержащий объявления локальных переменных и операторы. Класс памяти Спецификатор класса памяти в определении функции определяет функцию как static или extern. Функция с классом памяти static видима только в том исходном файле, в котором она определена. Все другие функции с классом памяти extern, заданным явно или неявно, видимы во всех исходных файлах, которые образуют программу. Если спецификатор класса памяти опускается в определении функции, то подразумевается класс памяти extern. Спецификатор класса памяти extern может быть явно задан в определении функции, но этого не требуется. Спецификатор класса памяти требуется при определении функции только в одном случае, когда функция объявляется
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |