Студопедия — ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. Как уже отмечалось, в языке программирования С заложены средства для задания последовательностей упорядоченных данных – массивов
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. Как уже отмечалось, в языке программирования С заложены средства для задания последовательностей упорядоченных данных – массивов






Как уже отмечалось, в языке программирования С заложены средства для задания последовательностей упорядоченных данных – массивов. Рассмотрим массивы символов, которые определятся типом char. Одномерный массив наиболее часто применяется в виде строки символов. Строка – это одномерный массив символов, заканчивающийся нулевым символом ' \0 ' [1, 2], который служит признаком окончания строки. При объявлении массива символов, предназначенного для хранения строки, необходимо отвести одно место для нуля. Например, если дана строка qwerty, в которой 6 символов, каждый из которых занимает в памяти 1 байт, то при инициализации такой строки необходимо отвести 1 байт для нулевого символа. Поэтому следует сделать объявление строки для семи символов:

char str[7] = "qwerty";;

Альтернативным объявлением может служить безразмерная инициализация:

char str[ ] = "qwerty";;

При этом в случае определения длины строки результатом будет число 6. Размер строки не изменится, если в ней указать символ окончания строки:

char str[ ] = "qwerty\0";;

Аналогично числовым массивам в языке С могут использоваться массивы строк, т. е. набор одномерных массивов символов. Например, сервер базы данных сверяет команды пользователей с массивом допустимых команд [2]. В качестве массива строк будет служить двухмерный символьный массив. Размер левого измерения определяет количество строк, а правого – максимальную длину каждой из них [2]. Например:

char str[30][80];

Число 30 – это количество строк массива, а число 80 – максимальная длина каждой строки с учетом нулевого символа ее завершения. Чтобы обратиться к отдельной строке двухмерного символьного массива, достаточно указать только левый индекс объявленного массива.

Многомерные символьные массивы образуются как и числовые:

char str[n][m]¼[N];


В объявлении массива n – первая размерность, m – вторая размерность, ¼, NN -я (последняя) размерность. Значения размерностей – целые неотрицательные числа.

 

6.1. Одномерные символьные массивы – строки

Одномерный массив – это список связанных однотипных переменных.

Общая форма записи [2]:

тип имя_массива[размер];

В приведенной записи элемент тип объявляет базовый тип массива. Количество элементов, которые будут храниться в массиве с именем имя_массива, определяется элементом размер.

В языке С индексация массива (символьного или числового) начинается с нуля.

Доступ к отдельному элементу массива осуществляется с помощью индекса. Индекс описывает позицию элемента внутри массива.

Все массивы занимают смежные ячейки памяти, т. е. элементы массива в памяти расположены последовательно друг за другом. Ячейка памяти с наименьшим адресом относится к первому элементу массива, а с наибольшим – к последнему.

Для массива символов при инициализации массива необходимо резервировать место для символа окончания строки, т. е. для символа ' \0 '.

Символьная константа – это набор символов, заключенных в двойные апострофы, например "hello";.

В конец символьной строки не требуется обязательно добавлять нуль, компилятор языка С делает это автоматически. При инициализации символьной строки как одномерного массива необходимо предусмотреть место для нулевого символа, например:

char str[7] = "hello";;

Для одномерных массивов общий размер массива в байтах вычисляется по формуле

всего байт = размер типа в байтах × количество элементов.

 

6.2. Двухмерные символьные массивы

 

Двухмерный массив представляет собой список одномерных массивов.

Общая форма записи двухмерного массива:

тип имя_массива[размер1] [размер2];

В приведенной записи размер1 означает число строк двухмерного массива, а размер2 – количество столбцов. При этом размерность размер2 определяет максимальную длину для заданного массива. Обычно размер2 задают с некоторым запасом.


 

В двухмерном массиве позиция любого элемента определяется двумя индексами. Индексы каждого из размеров массива начинаются с нуля.

Место хранения для всех элементов массива определяется во время компиляции. Память, выделенная для хранения массива, используется в течение всего времени существования массива.

Для двухмерных массивов заданного типа общий размер массива в байтах вычисляется по формуле

всего байт = количество строк × количество столбцов × размер в байтах.

Инициализация двухмерного символьного массива может быть определена либо посимвольно, либо построчно, например

char str[3][80] = {

{'1','2','3','4','5'},

{'x','y','z'},

{'A','B','C','D'}

};

 

char str2[3][80] = {

"0123456789";,

"x_y_z";,

"A B C D" };

Число 80 взято с запасом для возможной длины строки. Число 3 – это количество строк двухмерного массива. В обоих случаях может быть добавлен символ окончания строки (' \0 '), который не выводится на экран дисплея и не передается в файл, например в текстовый. В то же время необходимо помнить, что каждая строка заканчивается нулевым символом.

 

6.3. Многомерные символьные массивы

 

Общая форма записи многомерного массива:

тип имя_массива[размер1] [размер2]¼ [размерN];

Индексация каждого размера начинается с нуля. Элементы многомерного массива располагаются в памяти в порядке возрастания самого правого индекса. Поэтому правый индекс будет изменяться быстрее, чем левый (левые). При этом в конце каждой строки подразумевается нулевой символ.

При обращении к многомерным массивам компьютер много времени затрачивает на вычисление адреса, так как при этом приходится учитывать значение каждого индекса [2]. Поэтому доступ к элементам многомерного массива происходит значительно медленнее, чем к элементам одномерного. В связи с этим использование многомерных массивов встречается значительно реже, чем одномерных или двухмерных массивов.

Для многомерных массивов общий размер многомерного массива в байтах вычисляется по формуле

всего байт = размер1× размер2× ¼× размерN ×размер типа в байтах.


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

Для определения размера типа в байтах применяется функция sizeof(), которая возвращает целое число. Например, sizeof(char).

При инициализации многомерных массивов необходимо указать все данные (размерности) за исключением крайней слева размерности. Это нужно для того, чтобы компилятор смог определить длину подмассивов, составляющих массив, и смог выделить необходимую память.

 

 







Дата добавления: 2015-09-06; просмотров: 446. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

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

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия