![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Массивы. Массив- это набор объектов одинакового типа, доступ к которым осуществляется прямо по индексу в массиве
Массив - это набор объектов одинакового типа, доступ к которым осуществляется прямо по индексу в массиве. Обращение к массивам осуществляется с помощью указателей (pointers) (п.6.3). Одномерный массив можно описать следующим образом: < тип_данных> < имя_массива > [< размер> ]; Используя имя массива и индекс, можно адресоваться к элементам массива: < имя_массива> [< значение_индекса > ] Значения индекса должны лежать в диапазоне от нуля до величины, на единицу меньшей, чем размер массива, указанный при его описании. Пример: char fam [20]; // массив (строка) из 20 символов. Двумерный массив можно описать следующим образом: < тип_данных> < имя_массива> [< размер_1> ] [< размер_2> ]; Пример. int kol [30][20]; // таблица 30 на 20 чисел типа int. Аналогично описываются массивы и больших размерностей. Многомерные массивы располагаются в памяти так, что быстрее всего меняется последний индекс. Начальные значения элементам массива можно присвоить при его объявлении в виде: < тип имя_массива> [...] = {< знач-1>, < знач-2>,..., < знач-N > }; Если пользователь не указал в квадратных скобках размер массива, то компилятор сам задает размер массива по числу приведенных начальных значений в фигурных скобках. Примеры инициализации одномерных массивов: int data [5 ]={5, 4, 3, 2, 1}; float scores [ ] = {3.4, 2.7, 1.8, 6.9, -24.3}; char tovar [20 ] = {«Сапоги»}; // строка «Сапоги» char prompt [ ] = {«Ответ:»}; // строка «Ответ:» char prompt [ ] = {'О', 'т', 'в', 'е', 'т', ': ', '\0' }; // строка «Ответ:» Структуры (записи) Структуры (записи) ‑ это группа логически связанных переменных. Объявление структуры имеет вид: struct [< имя структуры> ] { < тип поля 1> < имя поля 1>; ... < тип поля n > < имя поля n>; } [< список имен структурных переменных> ] ; Описание переменной структурного типа выглядит следующим образом: struct < имя структуры> < список переменных-записей>; Имя структурной переменной (записи) можно указать и сразу при объявлении структуры перед правой фигурной скобкой. Структурным переменным можно присваивать значения агрегатно (сразу по всей структуре), но их нельзя сравнивать на равенство или неравенство. К полям записи можно обращаться, указывая имя переменной-записи, имя поля и разделяя эти имена точкой. Пример. type1 valuel = x.field1; type3.value3 = z.field3; Если структуры являются глобальными или описаны, как static, внутри функции, то их, как и массивы, можно инициализировать непосредственно в месте описания. Начальные значения для каждой структуры задаются внутри набора фигурных скобок. Соответствие между константами и полями устанавливается по порядку записи. Это означает, что первая по порядку константа связывается с первым по порядку полем, вторая - со вторым и т.д. Комбинируя структуры и массивы, можно строить универсальные и гибкие структуры данных. Пример struct stovar // объявление структуры под именем stovar { int kt; // код товара - целочисленная переменная char nt [20]; // наименование товара - строка из 20 байтов } // конец тела структуры zstovar={1,»Сыр»}; // наименование переменной-записи и значения полей stovar mzstovar [2]; // объявление массива записей типа stovar mzstovar[1].kt=2; // задание значения поля kt второй записи массива printf(«\n%d, %d %s», zstovar.kt, mzstovar[1].kt, zstovar.nt); // вывод значений Битовые поля задаются в виде: < целочисленный тип> [< имя> ]: < ширина в битах (< =64)>; Раполагаются поля в памяти слева направо. Пример. struct vector {int i: 2; int: 2; unsigned j: 4; long k: 64; } a, b, c;
|