|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Инициализация массивов
В языке С массивы при объявлении можно инициализировать [5.2]. Общая форма инициализации массива: тип имя_массива[размер1] * [размерN] = {список_значений};В список_значений входят констант, разделенных запятыми. Типы констант должны быть совместимыми с типом массива. Пример инициализации одномерного массива: int A[5] = {1, 2, 3, 4, 5};При этом A[0] = 1, A[1] = 2 и т.д. При инициализации многомерного массива для улучшения наглядности элементы инициализации каждого измерения можно заключать в фигурные скобки. Пример инициализации двухмерного массива: int MN[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};Массив MN[3][4] – это матрица, у которой 3 строки и 4 столбца. Для многомерных массивов инициализацию можно также проводить с указанием номера инициализируемого элемента. Пример инициализации трехмерного массива: int XYZ[2][3][4] = {{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} },{ {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} }};Как видно, массив XYZ содержит два блока, каждый из которых есть матрица размера 3 4, т.е. 3 строки и 4 столбца. В языке С возможна инициализация безразмерных массивов. Например, для одномерного массива: int A[ ] = {1, 2, 3, 4, 5};В многомерном массиве размер самого левого измерения также можно не указывать. В частности, для инициализации массива MN[3][4] допустима следующая запись: int MN[][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};При инициализации многомерных массивов необходимо указать все данные (размерности) за исключением крайней слева размерности. Это нужно для того, чтобы компилятор смог определить длину подмассивов, составляющих массив, и смог выделить необходимую память. Рассмотрим пример безразмерной инициализации для трехмерного массива целых чисел: int XYZ[][3][4] = {{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}},{{13, 14, 15, 16},{17, 18, 19, 20},{21, 22, 23, 24}}};Вывод трехмерного массива на консоль (дисплей) можно выполнить по следующей программе: #include <stdio.h>#include <conio.h> int main (void) { int i, j, k; int XYZ[][3][4] = {{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, // 1-й { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } }; // 2-й for (i = 0; i < 2; ++i) { printf("\n"); for (j = 0; j < 3; ++j) { printf("\n"); for (k = 0; k < 4; ++k) printf(" %3d", XYZ[i][j][k]); } } printf("\n\n Press any key: "); _getch(); return 0; }Одномерный массив – это список связанных однотипных переменных. Общая форма записи одномерного массива [6.2]: тип имя_массива[размер];В приведенной записи элемент тип объявляет базовый тип массива. Количество элементов, которые будут храниться в массиве с именем имя_массива, определяется элементом размер. В языке С индексация массива (символьного или числового) начинается с нуля. Доступ к отдельному элементу массива осуществляется с помощью индекса. Индекс описывает позицию элемента внутри массива. Все массивы занимают смежные ячейки памяти, т.е. элементы массива в памяти расположены последовательно друг за другом. Ячейка памяти с наименьшим адресом относится к первому элементу массива, а с наибольшим – к последнему. Для массива символов при инициализации массива необходимо резервировать место для символа окончания строки, т.е. для символа '\0'. Символьная константа – это набор символов, заключенных в двойные апострофы, например, "hello". В конец символьной строки не требуется обязательно добавлять нуль, компилятор языка С делает это автоматически. При инициализации символьной строки как одномерного массива необходимо предусмотреть место для нулевого символа, например: char str[7] = "hello";Каждая строка содержит на один символ больше, чем задано явно: все строки оканчиваются нулевым символом, имеющим значение 0. Для одномерных массивов общий размер массива в байтах вычисляется по формуле: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |