Главная » Просмотр файлов » Г. Шилтд - Самоучитель C++ (DJVU)

Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 76

Файл №1114955 Г. Шилтд - Самоучитель C++ (DJVU) (Г. Шилтд - Самоучитель C++ (DJVU)) 76 страницаГ. Шилтд - Самоучитель C++ (DJVU) (1114955) страница 762019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Ответы на вопросы и решения упражнений 5 (9 яагер "р; р = (иматр *) о(з; аког(1=0; 1<4; сопх « р->деХ а() « Р++; соп1 « р->деЬ а() « "~п"; Р++', сои( « "'~п"; теЬлп ()т 4.3 1. // Использование указателя лЬ1я $1пс1ис(е <1ояХ.хевтп> пя1пд павеврасе явс(; с1аяя тус1аяя ( 1пл а, Ь; рпЬ11с. тус1аяв (Ы п, 1пл в) ( лМя->а = и; ль1я — >ь = тк; 1пь- аИ О ( хелпхп ьЬ1я->а + ~Ь1я->Ьт ) уоЫ яЬои(); уо1о пьус1аяя::яЬоы() ( 1пв 'ь = ТЬ1я->ах(х((); // вызов $ункпии-члена сапа « в «"'~п"; 1пл п~а1п() ( тус1аяя оЬ(10, 14); оЬ,яаоы(); хек тхп О; 520 Самоучитель С-ьч- 4.4 ссшс)лйе <1оят.геев> паунд патпеярасе ясй; з.пС па1п() а1оап *~) 1опд *1; сЬап *с; 1 = пеи я1оа1; 1 пех 1опд; с = петю сЬах; з.й (~( ) ) ' т ; с) сопя « "отрубка выделения памяти,' "есина 1; *й . 10.102р *1 = 100000; *с = 'А'' сопс «*й« ' ' « *1 « ' ' « "ср сосв « '~п') йе1еСе й; йе1епе 1; йе1еСе с; тесптп О) 2.

()1пс1ибе <1оя~геап> ()1пс1пйе <ся~т.упд> пяупд патпеярасе яяй; с1аяя рЬопе ( сЬат патяе[40]т сЬаг пшпЬеп(14)," рпЬ11с: чоуй яЬопе(сЬап «и, сЬат пан) чойй яЬою(); )т чоуй рЬопе::я~оге(сЬат *и, сЬат *аппп) ( яЬпсру (пале, и) ) яЬхсру (питЬег, лна) Приложение В. Ответы нв вопросы и решения упражнений 52( чоЫ рпопе:: еЛоиО ( соус « пате « ": " «п~леЬегр сощ « "~п"; 1пг гав 1п () рпопе +рг р = пеж р)топе; 1Г('р) ( сонг « "Ошибка выделения памяти."; гете го 1; р->асоге ( "Исаак Ньютон", "111 555-2322" ); р->аарон( ); с)е1еге р; геснгл 0: 3.

В случае неудачной попытки выделения памяти, оператор пеи может либо возвратить нулевой указатель, либо возбудить исключительную ситуацию. Чтобы выяснить, какой механизм используется в вашем компиляторе, необходимо просмотреть соответствующую техническую документацию. В соответствии с требованиями стандарта по С++, оператор пен по умолчанию возбуждает исключительную ситуацию. 4.5 1. сваг *р; р = лех с)тат[100): О ....

есгсру(р, "Это проверка" ); 2. Фвпс1пг1е <воаЕгеап» петли пагаеврасе аЫ; 1лв гпа3.п() Йоьб1е +р; ,р = леж доп)ате(-123.0987)у Самоучитель С+~ сопс « *р « ''и'р лесптп 0; 4.б 1. Нпс1Ме <1оеЕкеал~> инула петеврасе в~с(; чоЫ лпеа(упв а1)г !! версия функции со ссылкой чоЫ рпее(ьпс *1); !! версия функции с указателем 1пс п~афп () фпв 1 = 10; 1пв ч' =- 20; тпед 01) ' рпеЧ(лЭ); сопс « 1 « ~ « 1 « '~п'р ле'сввп 0; // использование параметра-ссыпки чоЫ гиен((п1 аф) — 1; ~! использование параметре-указателя 'ар ч(фпад *1) *1 — *1 2. При вызове функции тпр)еО адрес й получен явно, посредством оператора й. Это ненужно и неправильно. При использовании ссылки в качестве параметра перед аргументом не ставится оператор &.

3. Адрес параметра-ссылки передается в функцию автоматически. Для получения адреса нет необходимости производить какие бы то ни было действия. Передача по ссылке быстрее, чем передача по значению. При передаче по ссылке не делается копии аргумента и поэтому не бывает сторонних эффектов„связанных с вызовом деструктора копии. 523 Приложение В. Ответы на вопросы и решения упражнений 4.7 1. В исходной программе объект передается в функцию ввожу по значению. Поэтому делается его копия. Когда функция в1гоио возвращает свое значение, копия удаляется и при этом вызывается деструктор копии. Это приводит к освобождению памяти, на которую указывает указатель р, но освобожденная память все егце необходима аргументам функции Йоту(). Здесь представлена правильная версия программы, в которой, для того чтобы предотвратить появление копии при вызове функции, в качестве параметра используется ссылка: // Теперь программа исправлена ((1пс1ис(е <1оя спеет> ((1пс1псе <сятг(пя> ((1пс1псе <сяМ)(Ь> ця(пя паптеярасе яга; с1аяв ясгпуре ( сЬаг 'р; роЬ11с; ялюлуре(спал 'я); -ясгсуре () ( с(е1есе () р; сЬаг *дет () ( гесигп р; ) яСг~уре.": ятюсуре (сЬаг *я) 1пг 1; 1 = я г1еп(я) + 1; р = пеи сЬаг (1]; 1~ (!р) ( сопб <С "Овибка выделения памяти'~,п"; ех1т(1); ясгсру(р, я) Проблема режена с помощью параметра-ссьлки лоЫ ябои(яегсуре ях) ( сЬаг *я; я = х.дег.

(); соцб « я « "~п",* 1п' жа1п() ( япгпуре а (" Привет" ), Ь ("Ъ~есь") Самоучитель С+ч. з)ию(а) > знои (Ь); те1итп О; 1. // Пример защил(енного двумерного массива ()1пс1п<)е <1озСгеаш> 1пс1пс)е<сясс)11Ь> пяупд пашеярасе зСй с1аяя аггау 1пс 1яуге, звуке; 1пс +р: рпЬ11с: аггау (1пс 1, 1пс ~); 1ПСарпС(зпС 1, 1пС ]); 1пС деС (1пС 1, 1шС 3)' ); аггау.": актау (1пс 1, гпс 1) р = пех 1пс [ 1 * з ) 1С()р) соиС « "Ошибка выделения памятия"; ех1с (1); 1яуге = 1; дяуее У // Запись значения в массив )п1 Лаггау::риС (5пС1, (пв Л) й(1<0 ! ) 1>=1я1ке( ~ з<0 1 1]>=1з1ке) соцс « "Ошибка, нарушены границы массива! !! 1п"; ехус(1) ~ геспгп р[1 * 3яузе + )]з // возврат ссылки на р[ // Получение значения из массива 1пС аггау::аеС(1пС 1, 'пС 3) 1К(1<0 ( ) 1>=1яузе 1 1 1<0 1 1 л>-лз1зе) соцс « "Ошибка, нарушены границы массива! ! !М"~ ех1с (1); Приложение В, Ответы нв вопросы и решения упражнений гегцгп р[1 * )Мхе + 1); // возврат символа 525 аког ( 1=0 у 1<2; 1++) Гог()=0; 3<3; )++) а.рис(1, 3) аког(1 0; (<2; 1++) Гог (3=0; з<3г )+~-) сон( « а.цеЬ(1, 3) « 'г // генерация ошибки нарушения границ массива а, рис (10, 10); гегнгп 0; 2.

Нет. Возвращаемую функцией ссылку нельзя присвоить указателю. Проверка усвоения материала главы 4 1. ()1пс1цс)е <1оеггеат> цетпд пагаеерасе асо; с1аее а Суре ( с(онЬ1е а, Ь| роЬ11с: ,а суре(с(ооЬ1е х, сонЬ1е у) а=-х; Ь=у; ~~отс) еЬои() ( сонг << а << ' ' << Ь << "~п' г ) 1пг. ва1п() ( )пг п1а1п () агтау а(2, 3) ! (пг 1 3 а суре оЬ(2) (5] а еуре(1, 1), а Туре(3, 3), а суре(5, 5), а СурЕ(7, 7), а уре(9, 9), а суре(2, 2), а суре (4, 4), а Суре(6, 6), а еуре(в, 8), а 1уре (10, 10) Приложение В Ответы на вопросы и решения упражнений :3.

Указатель 1Ыв — это указатель, который автоматически передается функции- члену и который указывает на объект, вызвавший функцию. 4. Основными формами операторов пев и йе1е1е являются следуюшие: р-чае — печг буре; с1е1еге р-гат"; При использовании оператора пе» нет необходимости в приведении типов. Размер объекта определяется автоматически, поэтому не нужен оператор жеев.

Кроме этого, незачем включать в программу заголовок <сМЙЬ>. 5. Ссылка по сушеству является скрытым константным указателем и просто играет роль другого имени переменной или аргумента. Преимушество от использования параметра-ссылки в том, что никакой копии аргумента не делается. б. й.тнс1ц.бе <1оясгеаш> вяуно вапеярасе ябс); чей гес1р 1с)оиЬ1е ао); 1в таъл() с)онЬ1е х = 1ОО.О; Гоас « х равнО « х « ~,и '; лесур )х); сов" « "Обратная величина равна " « х « '~в' геГвтл О; чоЫ гес)р ',с)овЬ1е ас)) д = 1/с$; Проверка усвоения материала в целом 1.

Для доступа к члену объекта с помошью указателя используется оператор стрелка 1->). 2, $1вс1вде <ъояггеав> Фъпс1вбе <сягг)пя> 111пс1ис)е <сятс111Ь> ия)пя пагпеярасе ягс1; Самоучитель С++ с1авв з1гсуре ( с)заг *р; 1п( 1еп; ри)з11с: зггсуре(с)заг "ргг): -зггГуре (); уоЫ з)тои(); зсгйуре:: згггуре (сваг "рог) ( )еп = згг)еп(ргг); р = печу сваг(1еп + 1); э'.г (! р) сои( « "Ошибка выделения памяти~в"; ек1г (1); зггсру(р, ргг); зггсуре::-зсггуре () ) совс « "Освобождение памяти по адресу р~п"; ае1еье () Р уотб зт.гяуре::з)зоиО сове « р « " — длина: " « 1еп; сонг « "~п"г 1пс п~атп() ( яьгсуре з1 ("Это проверка" ), з2 ("мне нравится счч-"); з1.

знои ~ ) ) з2. з)тои ( ~ ~ те вгп ОГ ГЛАВА 5 Повторение пройденного 1. Ссылка — зто особый тип указателя, который разымсновывается автоматически. Ссылка в инструкциях может использоваться точно так же, как обьект, 529 Приложение В. Ответы на вопросы ирешенив упражнений на который она указывает. Имеются три вида ссылок: ссылка может быть параметром, ссылка может быть возвращаемым значением функции и, кроме этого, ссылка может быть независимой. Самыми важными являются ссылка в качестве параметра и ссылка в качестве возвращаемого значения функции. 2. Фтпс1абе сьоятгем> пя1па пагпеярасе ягн; 1пг па1п 11 1 Поаг гпт *1; Г= пса йоаг; = пеа 1пг; 1 й' ~ ! г ~ ! !1) соит.

сс "Ошибка выделения памити1п"; гетцгп 1; *~ = 10.101; "1 = 100; сонг <с *й с« ' ' с "1 « ' ~п'; с1е1есе Г; йе1есе . есата О; 3. Здесь показана основная форма оператора пев, используемая для инициализации динамических переменных: уиевееелв ни перененнуи = пеи аип1иницивлиеируезвее виаиеиие) Например, .в следуюшем фрагменте выделяется память для целого и этому целому присваивается значение 10: 1п1 ~р; р = пев 1пе.1101; 4. Фьпс1пс1е <1овсееав> аязпс папеярасе яс<1; с1аяя яагер гас х; рыа11с: яагпр (тпс п) ( х = п; Самоучитель тпв Явах() ( левш:п х; тпь лаатпь) ( ватю А[10) .— — ( 1, 2, З, 4 5 б 7 8 9, 10 тпе ~ел(1=0р 1<10) 1++) сопт. « А( 1 ) . десх ( ) « ' ' Р сопл « "~п"; велпкп 0; 5.

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

б. Нет. 7. ()1пс1пае <1ов~кеат> пвтпа патпеврасе вТс(; чотс( жад (1опс ьп~ип, 1опс ов<(ев); тпс тпаьп() ( 1опд и = 4; 1опд о = 2; сопл (( "Значение 4, увеличенное на два порядка равно пад (и, О); сопв « и « '~п'; -елпкп 0; лот<(к~ай (1опч апшп, 1опо око(ел) ( йов(; ох<(ел; слоев -- ) пип =. пил * 10; Приложение Я. Ответы на вопросы и решения упражнений Упражнения 6Л 1. ((1пс1ийе <1озтгеатп> ()1пс1пое ссясг1пд> ()1пс1ис(е <сясс)11Ь> пя1пд пжпезрасе зМ; с1аяя з1т1уре ( с)тат *р; 1пб 1еп; рпЬ11с: з~гбуре(); ,а~гяуре(сваг *я, 1пс 1),. сЬат *депзкг1пр() ( тебштп р? 1пя це~1епц~й() ( теяптп 1еп; зт.к1уре;:з~ттуре(? ( р =.

пеи сйат[255) 1 1т ((р) ( сои1 « "Сшибка выделевия памяти~п"; ех1т.(1); ) *р = '10'; УУ яб левая строка 1еп — — 255; з".кСуре: ".зшкбуре(сЬак *я, 1пс 1) Н(з~г1еп(з) >=- 1) ( соис « "Вьделено слишком мало памяти.'1п"; ех1~ (1) 1 ) р = пеи сваг[ 1 1' Л('.р) ( соил « "сятибка выделения памяти1п"; ех1ш (1); астору (р, я) 1еп = 1; тпб па(п () Самоучитель С++ я1гСуре я1? зЬгсуре з2 ("Это проверка", 100) соса « "Строка я1: " «я1.де?я~г1пд () « "- длиной: сопс « з1.дес1епд~Ь() << '"~п"; соус « "строка я2: " << з2.деяятг1пд() << " — длиной: "? сопс « з2.дес1епд~Ь() << "1п"; лесплп 0; 2. // Имитапия секундомера ()1пс1пс?е <1оябгеа?а> (?1пс1пс?е <сс1п?е> пя?пд пажеярасе зъс?; с1аяя я орхассЬ с?опЬ1е Ьед?п, епо; рпЬ11с: з?ориапс??(); з~ориассЬ (с1ос)с Ь с); -я?орые?с??()' ло?б ясак- () ? чоЫ здор (); лотс? зЬои() .' з1ориассЬ::я1ориа~сп() ( Ьео?п = епс? = О,О; ) з~ориа~с??:: яЬорыа1с)т (с1ос)с Сс) Ьед?п = (с?оыЬ1е) с / С?ОС?(Я РЕК ЯЕС; епс? = 0.0; зЬорыаТсп::-яяориаЬсЬ() соуп « удаление объекта япорхапс?1 зЬои(); лоЫ яториавс?с:: ясапь () Ьес??п = (с?опЬ1е) с1ос)с() ( С1ОСКЯ РЕК ЯЕС; Приложение В.

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

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

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

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