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

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

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

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

Доступ к отдельному элемсшу массива осушествлястся с помошыо индекса. Согласно правилам языка С/С++ все массивы состоят из смежных ячеек памяти. Младшни адрес соответствует первому элема~ну массива, а старший — последнему. Массивы могут быть олномср~|ыми и многомер~~ыми. Наиболее распространенным массивом является строка, завсршаюшаяся нулевым байтом. Она представляет собой обычный массив символов, последним элементом которого является нулевой байт. Массивы и указатели тесно связаны между собой.

Трудно описывать массивы, не упоминая указатели, и наоборот. В этой главе мы опишем массивы, а указатели рассмотрим в главе 5. Чтобы хорошо разобраться в этих важных конструкциях, необходимо изучить обе главы. ~ Одномерные массивы Объявление одномерного массива выглядит следуюшнм образом. тип имя переменной[размер! Как и другие переменные, массив должен обьявляться явно. чтобы компилятор мог выдели~ь память для него.

Здесь глин объявляет базовый тип массива, т.е. тип его элементов, а размер определяет, сколько элементов содержится в массиве. Вот как выглядит объявление массива с именем Ьазапее, имсюшсго тип аооЬ1е и состояшсго из !00 элементов. (В боцЬ1е Ьа1апсе[100\; Доступ к элементу массива осушествляется с помощью имени массива и индекса.

Для этого индекс элемента указывается в квадратных скобках после имени массива. Например, оператор, приведенный ниже, присваивает третьему элементу массива Ьа1авев значение )2.23. (В Ьа1апсе[3) = 12.23; Индекс первого элемента любого массива в языке С/С++ равен нулю. Следовательно, оператор $ спаг р[10); объявляет массив символов, состояший из [О элементов — от р[о! до р[9). Следую- шая программа заполняет целочислсн~~ый массив числами от 0 до 99. Ф1пс1цг)е <вгс)во.Ь> гпе паап(чоМ) ( 1пе х[100); У* Объявление целочисленного массива, состоящего иэ 100 элементов *г' 1пе /* Заполнение массива числами от 0 до 99 "/ гог(Е=О; с<100; ++Г) х[Г) /* Вывод на экран элементов массива х *г' гог(Г=О; О<100; ++С) ргъпг1'("Вг) ", х[е)); гегцгп 0; Часть !.

Основы языка С++: подмножество С Объем памяти. псобхолнмый лля хранения массива, зависит от ого типа и размера. Размер одномерного массива в байтах вычисляется по формуле: количесюео байпюв.=. взнеох(базовый шип) ' калачево~во злеменелов В языке С/Сч ь нс предусмотрена проверка выхода индекса массива за пределы допус— тимого диапазсаа. Иными словами, во время выполнения программы можно по ошибке выйти за пределы памяти, отведенной лля массива, и записать данные в соседние ячсики, в которых могуг храниться другие псрсмснныс и даже программный код. Ответствен- ность за прслотврашснис подобных ошибок лежит на программисте.

Например, фраг- мент программы, приведенный ниже, будет скомпилирован без ошибок. однако во вре- мя выполнения программы инлскс массива выйдет за прслслы допустимою диапазона. ъпС соопг[10], /* Выход индекса массива эа пределы допустимого диапазона тот[1=-0; 1<)00; [че! соопс[1] = 1; По существу, одномерный массив представляет собой список переменных„имеющих одинаковый тип и хранящихся в смежных ячейках памяти в порядке возрастания их индексов.

На рис. 4,! показано. как хранится в памяти массив а, начинающийся с адреса ]000 и объявленный с помощью оператора $ с)тат а [7]; Злсыснт а[0) а[1] 012) а[3) а[4] в[5) а[В) Адрес 1000 1001 1002 1003 1004 1005 1006 рис. 4. й Массив из семи символов, начинаюи[ийсл с адреса КОО '--'~ Создание указателя на массив Имя массива является указателем на первый его элемент.

Допустим, массив объявлен с помощью оператора $ зпс аатр1е[10); Указателем на его псрвыи элемент при этом является имя вазар1в. Таким образом, в следующем фрагменте указателю присваивается адрес первого элемента массива вамр1е. ьпс р; з па вамр1е[10) р р = аапр1е; Адрес первого элемента массива можно таске вычислить с помощью оператора в. Например, выражения намрзе и вватр1в[0] эквивалентны. Однако в профессионально написанных программах на языке С/Сч ь вы никогда нс встретите выражение вввяр1е[О) . Передача одномерного массива в функцию В языке С/С+ ь весь массив нельзя передать в качество аргумента Функции. Вместо этого можно передать указатель на массив, т.с.

имя массива без индексов. Приведенный ниже Фрагмент программы передаст в функцию снпс1() индекс 1. Глана 4. Массивы и строки зпс аза1п(но1о) ( 1пе з.(1а)з гнпс1(1)з Вели аргументом функции является одномерный массив, ее формальный параметр можно обьявить тремя способами: как указатель, как массив фиксированного размера и как массив неопределенного размера, Например, чтобы прелоставить функции Яппсъ() доступ к массиву 1., можно использовать три варианта.

Во-первых, в качестве ес аргумента можно объявить указатель. ззоЫ гипс1(Ыс *х) /* указатель */ ( Во-вторых, можно передать указатель на массив фиксированного размера. ззоЫ гипс1(1пс х(10)) /* массив фиксированного размера */ ( И, наконец, можно использовать массив неопределенного размера. чо1с) гипс1(1пс х()) /" Иассив неопределенного размера "/ ( Эти три объявления эквивалентны друг другу, поскольку их смысл совершенна одинаков. в функцию передается указатель на целочисленную переменную.

В первом случае действительно используется указатель. Во втором применяется стандартное объявление массива. В последнем варна((те объявляется, что в функцию будет передан целочисленный массив неопределенной длины, Размер массива, передаваемого в функцию, не имеет никакого значения, поскольку проверка выхода индекса за пределы допустимого диапазона в языке С/С++ не предусмотрена. При указании размера массива можно написать любое число — это ничего не изменит, поскольку в функцию будет передан не массив, састояший из 32 элементов, а лишь указатель на его первый элемент.

ззоЫ гипс1(фпе х(32)) /* Иассив фиксированного размера */ Часть!. Основы языка С++: падмиожвспзо С Строки, завершающиеся нулевым байтом Предназначение Копирует строку вг в строку а1. Приписывает строку аг в конец строки в1. Вычисляет ллину строки аг. Возвращает О, если строки в1 и вг совпадают, отрицательное значение, сели а1<в2, и положительное значение, если в1>в2.

Возвращает указатель на позицию первого вхожления символа с)з в строку в1. Возвращает указатель на позицию первого вхождения строки вг в строку в1 аскару(а1.а2) всгсав(в1,в2) ваг1ев(в1) вегсвр(в1, а2) ввгс)зг(а1,сН) нагаек(в1, вг) Эти функции объявлены в стазшаргном заголовочном файле всг)ззн.н. (В программах на языке С++ используется также заголовочный файл <свег1вн> ) Применение этих функций иллюстрируется следующей программой. Фгпс1оз)е <вес]йо.а> въпс)ас]е <есгъпя.н> ъпс язазп(ззоъс) ( с?заг е1[60], е2[80]; иеее(е1) з иееа(а2)з Не следует путать нуль (о) н нулевой байт (хо), яли нулевой символ. Признаком конца строки является именно нулевой байт. Если не указать обратную косую черту, нуль будет считаться обычным символом.

— Прич. рей), Глава 4. Массивы и строки Чаше всего одномерный массив используется для представления строк символов. В языке С++ есть два вида строк. Во-первых, в нем предусмотрены строки, завершающиеся нулевым байтом (пц11-(епп[па(ед з(ппя), представляющие собой массивы символов, последним элементом которых является нулевой байт. Это единственный вид строки, предусмотренный в языке С. Он по-прежнему является наиболес широко распространенным видом строк. Иногда строки, завершающиеся нулевым байтом, называются С-сзнроками (С-з(ппя). В языке С+а определен также класс всгвпн, который реализует объектно-ориентированный подход к обработке строк.

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

И с)заг лег[111 з В этом объявлении предусмотрена ячейка, в которой будет записан нулевой байз.. Строка символов, заключенных в двойные кавычки, например, "Здравствуйте, я ваша тетя!'*, называется строковой консташлий (бэппа сопя(ап(). Компилятор автоматически добавляет к ней нулевой байт. поэтому программист может не беспокоиться об этом. В языке СГС++ предусмотрен богатый выбор функций для работы со строками.

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

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

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

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