Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 162

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 162 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 1622019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 162)

П.1. Память, выделяемая для объединения 8 и структуры Т Объединение. Объединение (ип! оп) — это определение типа, синтаксически похожее на определение типа зггос1, но семантически эквивалентное вариантным записям языка Рааса! (раздел 61.6). Различие между типами оп! оп и бгбэсг показано на рис. П 1. В об ьединении 5 каждый его компонент имеет) значение такое же, Определяемые пользоеателем типы Язык С может создавать записи структурированных данных, называемые струк- турами, с помощью типа бггосц Синтаксис структур похож на синтаксис перечи- сляемых констант, описанных выше. Например, з1гост магу1апсс1азз (~пт з!ге; спаг ~пзтгистог(20];) см5с330. смбсбза, определяет структуру Магу1апбС1аэб, содержащую целый компонент юге и компо- нент ! пэтгисгог в виде массива из 20 символов, и объявляет две переменные СМЗСЗЗО и СМ5С630 типа Магу1апбС1 азз. А следующий оператор: зтгос1 Магу1апбС1азз СМ5С430; определяет новую переменную СМЗС430 типа Магу1апбС1аээ, ссылаясь на то же самое описание структуры.

К членам структуры доступ осушествляется с использовани- ем точечной нотации. Так, СМ5СЗЗО. 5!ге будет целочисленным компонентом з!ге этой структуры, а соответствукнцее имя СМ5СЗЗО. ! пбггис1ог будет компонентом ! п51гос1ог этой же структуры. Объявление записи с помощью конструкции зтгост создает новый тип. Пара- доксальноо, но объявление ту ребе( на самом деле является просто подстановкой име- ни, но новый тип оно не создает. Соответственно тураоет !п1 пан!пт. определяет, что тип пеи~ пт является таким же, как и тип ! пт.

Обычно такое описа- ние используется при определении структур 51гост. Так, во фрагменте туресеГ зтгис1 НенС1аьз 1, ) Магу1апСС1азз; Магу]апбС1азз А, Магу1апОС1азз В: определяется новое имя Магу1апбС1аэа для структурного типа МеьС!абэ, и с помо- щью нового имени типа переменные А и В объявляются как принадлежа!цие также к структурному типу МеиС1а55.

586 Приложение, Обзоры языков как и Рзначение самого объединения з. Каждый компонент располагается в одной и той же области памяти. В структуре Т Кзначение компонента А то же самое, что и у нее самой, но все рзначения остальных компонентов отличны от рзначения структуры Т. Каждый компонент располагается в своей собственной области памяти. Представление объектов в памяти. Целые, вещественные с плавающей точкой и символьные данные хранятся в своем естественном формате, а массивы не требуют дескрипторов.

Указатели являются просто Рзначениями объектов, на которые они указывают. Накладные расходы при доступе к этим объектам незначительны. Указатели и массивы тесно связаны. К массиву пт П()О] также можно получить доступ как к указателю: тпт *аггвургг, аггауртг - вп(О): т'* вггвуртг указывает кв Я(0] *у Выражение*((аггаургг) + (т)) имееттожезначение, что из(т]. Если т) — это структура вггисс: втгост т) ( тпг д, тпт Ь, ) тогда последовательность в)гост тт *р; р = Ытгост П *) ва11осбмзеоцзтгосг П)); как и в предыдуп1ем примере, выделяет память для структуры т) и сохраняет ее адрес в переменной-указателе р. Для доступа к компонентам этой структуры используется операция в (которая записывается как ->).

На компонент з ссылаются следуютцим обра:юм: р в а; а на компонент Ь вЂ” р — > Ь. Обратите внимание на то, что р — > з есть пточттогтитожесамос, что и (*р) а. Иттициалиаация. Любую статически размещаемую переменную можно инициализировать следующим образом: тпт т=!2. Если нужно инициализировать массив, то задается список элементов: тпт а(4) = (1.

2. 3, 4), спаг зтюпд(4] . "аЬс"; В последнем примере массив вггтпо инициализируется как аЬс)0. В массиве должно быть зарезервировано место под завершающий ппП-сиьтвол. П.2.2. Управление последовательностью действий Выражения Одна из сильных сторон языка С вЂ” это наличие множества операций, которые могут обрабатывать числовые данные. (Одновременно это является и его слабым местом, потому что теперь суп1сствует много способов выполнить аналогичные операции ) Множество операций языка С и уровни их приоритетов были приведены ранее, в табл. 8.2, Важно помнить о различии между поразрядными и логпческими операциями. Операция поразрядного логического И в выражении 584 приведет к результату, рав- ному значению 4, поскольку эта операция выполняет логическое И для каждого бита отдельно: 5 $ 4 = 0101 $ 0100 = 0100 = 4 Операция логического И в выражении 5 00 4 приведет к значению 1, поскольку она выполняется следующим образом: а аа Ь = т( а = 0 тпеп 0 е1ве тт Ь - О тпеп 0 е1ве 1 Другие логические операции выполняются подобным же образом.

Они всегда возвращают значение 0 нли 1. Выражение т( (а = Ь) присваивает значение Ь переменной а и возвращаетзначенпе а. Будьте внимательны — если вы имеете в виду проверку равенства двух переменных, используйтс )0 (а==Ь). Приведение типов. Обычно приведение типов встречается тогда, когда не происходит потери информации, как прп переходе от типа спас к типу тпс. Приведение значения к новому типу можно осуществить, если поставить перед ним унарную операция приведения типа.

Так, а + (тпт)Ь сначала приведет Ь к типу тп(, а потом прибавит Ь к а. Операторы Блоки. Последовательность (списон операторов~ можно использовать везде, тле необходим оператор. Также в каждом блоке можно объявить локальные переменные: (тпт т, 0: Однако, как отмечалось в разделе 9.4.2, память под переменные т и 0 будет отведена в тот момент, когда будет отводиться память нод всю процедуру, содержащую этот блок. Выражения-операторы. Любое выражение можно использовать в качестве оператора. В частности, оператор присваивания а = Ь в действителыюсти есть выражение присваивания.

Условные операторы. В языке С имеются обычные конструкции )Г Фцеп и тт ЬЬеп е!ве: тт тпеп т( (выражение) оператор 1( тпеп е1ве тт (выражение) оператор е1ве оператор Во вложенных операторах т ( оператор е1ве ассоциируется с ближайшим к нему т б Операторы цикла. В языке С существует три оператора цикла — ыц)1е, т)о и 0ог; + ыЬ)10: ып)1е(выражение) оператор; означает, что следует выполнять оператор до тех пор, пока выражение остается истинным. + т)о: Оо оператор ып)1е(выражение); означает выполнить оператор, а затем проверить выражение.

Если оно истинно, то повторить оператор 00. Таким же оператором цикла является оператор гереас ыпв)1 в языке Разса1 и некоторых других языках; отличие заключается лишь в том, что цикл продолжается, если тестовое выражение истинно. + 0ог:0ог(выражение,: выражение,: выражение,) оператор: являетсяформойитерации и выполняется следующим образом. Е Если задано выражениео то оно вы шсляется. Часто (но не обязательно) это оператор инициализации, например 3=0.

888 Приложение. Обзоры языков 2. Если задано виражениеп то оно вычисляется. Если результат равняется 0, то цикл ~ог завершается. Обычно выражение, определяет условие прекращения цикла, например 0<10, 3. Выполняется оператор. 4. Если задано выражениен то оно вычисляется. Обычно это приращение переменной — счетчика цикла, например 3++ или просто прибавление 1 к 0. 5. Процесс повторяется с шага 2. Оператор ви1ссЬ. Действие оператора витссГ подобно многовариантному ветв- лению; часто он называется оператором саве. Его синтаксис следующий: вн(тсывнранение) (саве константа,; список операторов,: Ьгеаи: саве коне~апта,: списан операторов„: Ьгеаи: саве константа,: Оетао)т. список операторов„ ) После того как вычисляется выражение, управление переходит к метке саве со значением константы, равной вычисленному значению выражения, или к опера- тору т)е1ао(с, если ни одна константа не совпадает с полученным значением втнра- жения.

В данном случае очень важен оператор Ьгеа~, и это является действительно сла- бым местом языка С, поскольку если отсутствует явная передача управления по- сле операторов одной метки саве, то будут выполнены операторы и всех последую- щих меток саве. Операторы передачи управления. В языке С существуют четыре оператора, передаютцих управление, — это ьгеак, сопстпие, досо и геьвгп. Оператор Ьгеа1 вызывает завершение ближайшего к нему из операторов нШ1е, бо, рог или си1 Ьсп, в которые он вложен. По существу, это оператор доЬо, передаю- щий управление первому оператору, который следует за составным оператором, содержащим оператор Ьгеа1.

Как отмечалось ранее, этот оператор очень важен для предотвратцения последовательного продолжения выполнения ветвей саве в опе- раторе вн1Ьси. Оператор сопс(пое передает управление в конец тела цикла непосредственно содержащего его оператора тог, т)о или нП11е. Это приводит к тому, что программа переходит к следующей итерации соответствующего цикла. Оператор досо нетка передает управление оператору, помеченному указанной меткой. Как и в языке ЕОКТЕА)к), это слабый оператор, его использование необя- зательно и лучше им вообще не пользоваться. Вложенные в операторы цикла опе- раторы Ьгей и сопт1пое обеспечивают все необходимые механизмы передачи управления.

Оператор гехогп осуществляет возврат из процедур. Если процедура вызыва- лась как функция, то синтаксис выглядит следующим образом: геьвгп выражение. Команды преп роцессора. Ключевые слова т)ет т пе, т 11)ей т 1пбет, 1пс1ос)е, т 1, опт)е1 и е1ве, начинающиеся с символа №, являются командами ил и директивами препро- цессора и не имеют никаких других функций в языке С, В старых версиях транс- лятора С символ № обязательно должен был являться первым символом в строке, однако в большинстве современных трансляторов перед этим символом допуска- ются пробелы. Директива №т)е№)пе именует последовательность лексем, например: №Сеттле иня последовательность лелеем Именованные константы могут быть определены следукпцим образом; №Сеттпе ТВОЕ 1 Обратите внимание на то, что запись №оеттле ТВОЕ - 1 неправильна, поскольку в этом случае значение константы ТВОЕ будет = 1, а не 1, Директиву №т)е№т пе также можно использовать для создания макроопределений, например: №оеттпе иияЕЧаг,, Чаг,..., Чаг„) последовательность ленсем где Чаг при использовании заменяются истинными аргументами, например; №оеттпе аов(А.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее