|
Программирование >> Элементы языков с и с++
case а : case Ь : операторы break; Какой бы из символов - а или ь - не поступил на вход переключателя, все равно будут выполняться одни и те же операторы. Но в теле switch мы видим еще одно ключевое слово: default. Это метка участка прочие : все значения заголовочного выражения, которые отличаются от значений, указанных в переменной case, будут приводить на этот участок, где можно располагать свои операторы, в том числе break. В основной программе сначала инициализируется массив а, в элементах которого будут накапливаться данные по встреченным символам. Затем запрашивается строка символов (getchar о иначе и не работает: надо набрать строку, закончить ее комбинацией клавиш <Ctrl>+<z>, затем нажать на клавишу <Enter>), а после организуется обработка каждого символа в цикле и передача его в функцию, в которой находится оператор switch. В эту функцию также передается имя массива, в элементах которого установлены счетчики количества символов (массив а), и имя массива s, куда будут записываться сами символы, чтобы потом можно бьшо их вывести на экран. Все прочие символы, не попадающие в предложение case, отмечаются в массиве S символом !. Когда встретится комбинация клавиш <Ctrl>+<z>, цикл обработки символов завершится, и произойдет вывод счетчиков из массива а. Уточнение по работе оператора for Мы знаем, что заголовочная часть этого оператора содержит три выражения. Оказывается, что любое из них может быть опущено (и даже все), но с одним условием: точки с запятой должны остаться на своих местах. Это удобно для организации бесконечного цикла, выход из которого можно осуществить, проверяя в теле некоторые условия и пользуясь при этом оператором break. Кроме того, в теле for могут находиться другие операторы for. Этим свойством часто пользуются. Например, если надо обработать какие-то значения переменной в заголовочной части, но для символов а и ь требуется выполнить общий алгоритм. В этом случае в теле switch можно записать: Оператор continue Этот оператор родственен оператору break: он используется не для выхода из цикла, а для продолжения цикла (возврата на реинициализацию), не доходя до конца оператора цикла (while, for). Оператором continue удобно пользоваться в тех случаях, когда при выполнении тела цикла ясно, что не следует продолжать выполнение операторов дальше, а надо возвращаться на новый виток цикла. Например, имеем массив целых чисел int а[п]. Требуется выбрать из него только положительные числа и обработать их. Такой цикл можно построить следующим образом: for(int i=0; i < n; i++) { if(A[i] <= 0) continue; другие операторы To есть сразу проверяем: если число отрицательное или нулевое, то его не требуется рассматривать, а можно переходить к проверке следующего. Оператор continue передаст управление на реинициализацию цикла (на выражение i++ в заголовочной части for). Оператор goto и метки Это оператор безусловного перехода на участок программы, который помечен меткой - набором символов, оканчивающимся двоеточием и начинающимся с буквы. Структурное программирование своим появлением на свет во многом I обязано этому оператору, который позволял делать такие петли в программе, j что и самому автору трудно было в них разобраться. Этот оператор может пре- j рвать цикл и выйти из него на метку. Например, можно написать: tinain () { for(;;) {goto vl;) vl: printf ( HelloW); getch(); Увлекаться этим оператором нежелательно. В крайнем случае, старайтесь] передавать управление только вперед. Глава 7 Работа с указателями и структурами данных Указатель Указатель- это переменная, которая содержит адрес другой переменной (говорят, что указатель указывает на переменную того типа, адрес которой он содержит). Существует одноместная (унарная, т. е. для одного операнда) операция взятия адреса переменной &. Если имеем объявление int а, то можно определить адрес этой переменной: sa. Если Ра - указатель, который будет указывать на переменную типа int, то можем записать: Ра=&а. Существует унарная операция * (она называется операцией разыменования), которая воздействует на переменную, содержащую адрес объекта, т. е. на указатель. При этом извлекается содержимое переменной, адрес которой находится в указателе. Если, как мы видели, Ра=&а, то, воздействуя на обе части операцией *, получим (по определению этой операции): *Ра=а;. Исходя из этого, указатель объявляется так: <тип переменной> * <имя указателя> Здесь: П <тип переменной> - ЭТО ТИП ТОЙ переменной, на которую указывает указатель, т. е. тип переменной, чей адрес может находиться в переменной, которую мы задаем как указатель; П <имя укаэателя> - ЭТО ИМЯ переменной. Это и есть правило объявления указателя: указатель на переменную какого-то типа - это такая переменная, при воздействии на которую операцией разыменования получаем значение переменной этого же типа.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |