Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 9

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 9 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 92019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Кроме того, они сохраняют свои значения на всем протяжении выполнения программы. Объявления глобальных переменных должны размещаться вне всех функций. Эти переменные можно использовать в любом выражении, в каком бы блоке оно не находилось. В приведенном ниже фрагменте программы переменная соиле объявлена вне всех функций. Несмотря на то что ее объявление расположено до функции вази(), з)у переменную можно было бы с таким же успехом объявить в другом месте, но вне функций и до ее первого использования. И все же лучше всего размешать объявления глобальных переменных в самом начале программы. М?пс1ис)е <зсс)1о.

Ь> зпт соипсг /* Переменная соиле является глобальной "/ ис?с) Йипс1(ио?с?) ио1д ?ипс2(ис?й) тпс па?п(гоаб) ( соилЕ = 100г ?ипс1(); тегитп О) иоЫ Випс1(иоЫ) ( апс темрг тегзр = соиле; типс2 (): рт?псВ("соиле = Ъе)", соиле)г /* Выведет число 100. */ ) иоМ ?ипс2[иоЫ) ( 1пт соиле г 1от(сопит=1) соиле<10; сопит++) риссдат('.'); ) Часть (. Основы языка С++: подмножество С Присмотритесь к этой программе повнимательнее. Заметьте, что, хотя ни функция гпа1п(), ни функция хипс1() не содержат объявления переменной соипе, обе эти функции успешно ее используют. Однако внутри функции хцисд() объявлена локальная переменная осипе. Когда функция явися () ссылается на переменную осипе, она использует лишь локальную переменную, а не глобальную.

Если глобальная и локальная переменные имеют одинаковые имена, то все ссылки на имя переменной внутри блока будут относиться к локальной переменной и не влиять на ее глобальную тезку. Возможно, зто удобно, однако об этой особенности легко забыть, и тогда действия программы могут стать непредсказуемыми. Глобальные переменные хранятся в специально отведенном для них месте, Они оказываются весьма полезными, если разные функции в программе используют одни и тс же данные.

Однако, если в них нет особой необходимости, глобальных переменных следует избегать. Дело в том, что они занимают память во время всего выполнения программы, даже когда уже не нужны. Кроме того, использование глобальных переменных там, где можно бьшо бы обойтись локальными, ослабляет независимость функций, поскольку они вынуждены зависеть от сущности, определенной в другом месте.

Итак, применение большого количества глобальных переменных повышает вероятность ошибок вслелствие непредсказуемых побочных эффектов, Большинство проблем, возникающих при разработке больших программ, является следствием непредвиденного изменения значений переменных, которые используются в любом месте программы. Это может случиться, если в программе объявлено слишком много глобальных переменных. ~~ Квалификаторы сопз1 и чо!айе В языке С существуют два квалификатора, управляющих доступом и модификациеи: сопле и чо1аех1е.

Их следует указывать перед модификаторами типов и именами типов, которые они уточняют. Формально эти квалификаторы называют сг-коалификаторами (ст-г)цайГ(егз). Квалификатор сопв$ Переменные типа сопле не мокнут изменяться, однако их можно инициализировать. Компилятор может поместить эти переменные в постоянное запоминающее устройство (Калг)огп Ассезз Мепюгу — )сОМ) Рассмотрим пример. $ сопле ъпс а=10( Это объявление создает целочисленную переменную с именем а и начальным значением, равным числу 10, которое в остальной частгл программы изменить невозможно.

Однако переменную а можно использовать в других выражениях. Переменная типа сопле может получить свое значение либо во время инициализации, либо с помощью других машинозависимых средств. Квалификатор сопле можно использовать для зашиты объектов, передаваемых в функцию в качестве аргументов. Иными словами, если в функцию передается указатель, она может модифицировать фактическое значение, на которое он ссылается. Но если указатель уточнить квалификатором сопле, функция не сможет изменить значение в соответствующей ячейке. Например, функция вр ео етавиО, рассмотренная ниже, выводит на печать тире, заменяя им пробелы в строке, которая является ее аргументом. Иначе говоря.

"строка для проверки" будет напечатана как "строка — для — проверки'*. Использование квалификатора еопве в объявлении параметра гарантирует, что код, помещенный внутри функции, не сможет модифицировать объекты, на которые ссылается указатель. 47 Глава 2. Выражения а(пс1ппе <вЕЖо.п> оо(Н вр со оввЬ(сопев спаг 'вег); ъпс пе(г (коЫ) ( вр со оавп('строка для проверки") соас) вр ео с)авп(попас спад *век) ( ы)Ц1е(*всх) ( 1г(*вс,-= ) Ргъпс1(-Яс", — ); е1ве ргъпсг("Фс , *все); в сг~-~: Если бы мы попытались модифицировать строку внутри функции вр ео ввв)з(), компилятор выдал бы сообщение об ошибке. Например, если написать функцию вр ео ()ввй() так, как показано ниже„то возникла бы ошибка компиляции. /* Ониска */ коЫ вр ео бавъ(сопев сйаг *век) ( ъб11е(*всг) ( ъй( век==' ' ) *век = ' †'; /* Нельзя! Лргумент вег является константным "/ рхъпей("вс", *век)/ веха+; ) Многие функции из стандартной библиотеки используют квапификатор сопев в объявлениях своих параметров.

Например, прототип функции век1епО выглядит следующим образом. й яхве е вег1еп(сопев сЬаг *век)) Объявив указатель век константной, авторы защитили от изменений строку, на которую он ссылается. В принципе, если в стандартной функции нет необходимости модифицировать объект, на который ссылается ее аргумент, то этот аргумент обьявляется константным. Каалификатор сопев можно также использовать лля предотвращения модификации переменных.

Помните. по переменную типа сопев можно модифицировать лишь за пределами программы. Например. ее значение можно изменить с помощью аппаратных устройств. Однако, если переменная объявлена константной, можно гарантировать, что ее изменение может произойти лишь вследствие внешнего вмешательства. Каалификатор чо!айе Кввлификатор во1аеа1е сообшает компилятору, что значение переменной может изменяться неявно.

Например, адрес глобальной переменной можно передать таймеру операционной системы и использовать его для отсчета реального времени. Б этом Часть (. Основы азякв С++: подмножество С случае содержимое переменной изменяется без явного выполнения какого-либо оператора присваивания. Зто очень важно, поскольку большинство компиляторов языка С/С++ автоматически оптимизируют некоторые выражения, считая, что значения переменных не изменяются, если они не указаны в левой части оператора присваивания. Таким образом, их значения нет смысла перепроверять при каждом обращении.

Кроме того, некоторые компиляторы изменяют порядок вычисления выражений в ходе компиляции. Квалификатор оо1ас11е предотвращает такие изменения. Квалификаторы сипае и чо1аеззв можно использовать одновременно. Например, если Ох30 — значение, хранящееся в порте, которое изменяется только под влиянием внешних обстоятельств, то следующее объявление предотвратит непредвиденные побочные эффекты.

В сопев со1ас11е сваг *роге = (сопев лго1ас11е сваг *) Охзо; Й~~ Спецификаторы хранения В языке С существуют четыре спецификатора хранения. | ехсвгп всае1с гвя1вевг аско Зги спецификаторы сообщают компилятору, как хранить объявленную переменную. Общий вид объявления, использующего эти спецификаторы„приведен ниже. специ4икатор хрипения тип имя перемените Обратите внимание на то, что спецификаторы хранения предшествуют всем остальным элементам объявления.

)щщ~" '" ' гз языке с+~- предусмотрен еще один спецгкрикатор хранения виеаьзе Он рассматриааегпся в части Рл Спецификатор ех1егп Прежде чем рассмотреть спецификатор ехеегп, опишем систему связей в языке С/С++. В языке С/С++ предусмотрено три категории: внешние, внутренние связи и их отсутствие. Как правило, функции и глобальные переменные имеют внешние связи. Зто означает, что они доступны нз любой части программы.

Глобальные объекты, объявленные с помощью спецификатора веае1с (описанного в следующем разделе), имеют внутренние связи Они доступны лишь внутри файла, в котором описаны. Локальные переменные нс имеют связси и, следовательно, видимы лишь внугри своего блока. Главное предназначение спсцификатора вхевгп — указать, что объявляемый объект обладает внешними связями в рамках всей программы. Чтобы понять, почему зто так важно, необходимо различать обаявление (бес)агайоп) и впряг)еление (дейппюп). В объявлении указываются имя и тип объекта.

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

Тип файла
DJVU-файл
Размер
7,03 Mb
Тип материала
Высшее учебное заведение

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

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