Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Массивы. Массив определяет непрерывный набор однотипных объектов данных
Массив определяет непрерывный набор однотипных объектов данных. Признаком массива служит использование квадратных скобок после идентификатора переменной. При определении в квадратных скобках указывается количество элементов массива (его размер), а при использовании в выражениях — индекс требуемого элемента. Массивы могут содержать элементы в любом из ранее рассмотренных типов представления данных: char, int, float double. Пример определения массива из 10 двухбайтовых целочисленных элементов: int list[10]; Данное определение зарезервирует в памяти МК 20 однобайтовых ячеек памяти. В выражениях программы доступ к каждому элементу массива возможен с использованием индекса. Индекс в Си автоматически отсчитывается с 0. Поэтому в нашем примере индекс может принимать значения от 0 до 9 включительно. Как и любая другая переменная, массив может быть объявлен с одновременной инициализацией его значений. Для этого в правой части операции присваивания «=» в фигурных скобках, через запятую перечисляются значения всех элементов массива: int list[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Если при определении массива его размер не указывается, такой массив обязательно необходимо явно проинициализировать. При этом компилятор автоматически приравнивает размер массива к числу проинициализированных элементов. int list[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // Размер массива будет равен //числу проинициализированных переменных т.е. 10 Также можно инициализировать произвольное число первых элементов массива с указанным размером: int list[10]= {1, 2, 3, 4, 5, }; // Инициализация первых пяти элементов //массива, состоящего из 10 элементов Для массивов символов можно применять сокращённую запись, при которой в правой части операции присваивания в кавычках записывается требуемая строка символов. При этом если не указан размер массива, компилятор принимает его равным количеству символов строки плюс один, поскольку в Си строка символов заканчивается ASCII символом с кодом ноль, который автоматически добавляет компилятор. char message[6]= " Smile"; char message[]= " Smile"; Первый элемент массива message[0] содержит код символа «S», последний элемент message[5] — код конца строки 0x00. Массив может быть многомерным. Количество измерений определяется количеством индексов массива. Пример определения двухмерного массива: int matrix[2], [3]; По аналогии с одномерными массивами, для многомерных массивов возможна инициализация в процессе его определения: int matrix[2], [3]= {1, 2, 3}{4, 5, 6}; Многомерный массив будет располагаться в памяти в следующем порядке: m[0][0] m[0][1] m[0][2] m[1][0] m[1][1] m[1][2] Обращение к элементам многомерного массива осуществляется посредством указания сразу нескольких индексов. Так после выполнения следующего выражения переменная m примет значение 6: m = matrix[1][2] Объединение некоторой группы данных в массив позволяет оперировать с этой группой, используя всего лишь одно имя переменной. Программы становятся более логичными и читабельными, что уменьшает вероятность появления ошибок программирования. Допустим по ходу исполнения алгоритма необходимо каждый элемент массива odd из 100 элементов, увеличить на 1. Следующий программный фрагмент демонстрирует реализацию этой задачи: for (i=0, i< 100, i++) odd[i] = odd[i] + 1; Внимательный читатель должен был бы заметить, что в примерах этого параграфа мы использовали только массивы целочисленных элементов. Далее в примерах программирования МК семейства 68HC12 будут использоваться именно целочисленные исчисления, поскольку вычисления в формате с плавающей запятой предполагают достаточно сложный алгоритм управления, который вряд ли уместен при начальном обучении. Однако мы рассмотрим более сложный вариант массива — массив структур в параграфе 3.12.
|