Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Обозначение элементов массива. Любая информация в ЭВМ хранится в ячейках оперативной памяти




Описание массивов

Любая информация в ЭВМ хранится в ячейках оперативной памяти. Поэтому предполагаемая работа с массивом требует предварительного выделения памяти для его хранения. Это действие выполняет описание массива.

Описание массива предписывает резервирование в памяти ЭВМ необходимого количества последовательно расположенных ячеек для хранения его элементов. Число ячеек выделяемого участка должно соответствовать количеству элементов массива. Желательно предусматривать увеличенный размер массива (по отношению к реально заданному).

Структура отдельного оператора описания одномерного массива:

описатель имя[размер];

где описатель – ключевое слово, определяющее тип элементов массива;

имя – идентификатор массива (формируется аналогично имени переменной);

размер – целая константа, определяющая количество элементов массива;

[ ] – ограничители размера массива.

 

Совместное описание символьных переменных x, y, z, а также одномерных массивов T(120) и S(70) может иметь вид:

char x, y, z, t[120], s[70]; или char y, t[120], x, s[70], z;

т.е. порядок расположения элементов может быть любым.

Описание массива позволяет использовать в программе любой из его элементов. Для обозначения элементов массива в Си используются индексированные переменные.

Индексированная переменная (индексное выражение) – обозначение ячейки для хранения элемента массива. Именуется указанием идентификатора массива и индекса (индексов) элемента.

ü Внимание! Особенность обозначения элементов массива в Си - нумерация индексов от 0, а не от 1. Поэтому индексы в Си на единицу меньше заданных математически. Это обстоятельство должно учитываться в программе, особенно при формировании условия повторения (выхода из) цикла.

Схема распределения памяти для хранения одномерного массива такова:

  индекс 0 индекс 1 индекс 2       индекс i-1       индекс n-2 индекс n-1  
  1-й элемент 2-й элемент 3-й элемент .. .. .. i-й элемент .. .. .. n-1-й элемент n-й элемент  
                           

Длина ячейки для хранения каждого элемента определяется типом массива:

· символьный – 1 байт;

· целочисленный – 2 байта;

· вещественный – 4 байта;

· двойной точности – 8 байт.

Структура обозначения индексированной переменной одномерного массива:

имя[индекс]

, где имя – идентификатор массива;

индекс – операнд целого типа, определяющий номер элемента в ряду других, составляющих массив;

[ ] – ограничители индекса.

Например, в описанном ранее массиве D(16) первый элемент обозначается индексным выражением d[0], второй – d[1], текущий – d[i], предпоследний – d[14] и последний – d[15].

При необходимости индекс может задаваться арифметическим выражением. Например, d[i+2] или d[jx5+3]. В любом случае на момент использования переменной индекс должен быть определен (рассчитан) и полученное значение должно укладываться в заданный описателем диапазон.

Адрес любой переменной определяется операцией &. Следовательно, у элемента d[0] адрес – &d[0], у d[i] – &d[i], т.е. все элементы массива располагаются в оперативной памяти линейно, начиная с адреса &d[0].

В языке Си идентификатор одномерного массива однозначно определяет адрес его первого элемента. Например, c º &c[0], d º &d[0].

Адрес каждого элемента одномерного массива выражается зависимостью имя+индекс (индекс определяет сдвиг элемента относительно первого на указанное им количество элементов). Например, &c[i] (адрес i-го элемента массива С) вычисляется как c+i.

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

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

Структура отдельного оператора описания многомерного массива:

описатель имя[разм_1] …[разм_i]… [разм_n];

где описатель – ключевое слово, определяющее тип элементов массива;

имя – идентификатор массива (формируется аналогично имени переменной);

размер – целая константа, определяющая количество элементов массива;

i - номер измерения (i=1 – первое измерение, i=2 – второе имзерение и т.д.);

n - измерение массива;

разм_i - целая константа, определяющая количество элементов массива по i-му измерению;

[ ] – ограничители размера массива по каждому измерению.

 

Константное выражение разм_i может быть опущено в случаях:

1) при обявлении массив инициализируется;

2) массив объявлен как формальный параметр;

3) массив обявлен как ссылка на массив, явно определённый в другом файле.

Инициализация одномерного массива

float[3]={1.,3.5,4.1}; или float[]={1.,3.5,4.1};

Инициализация многомерного массива

float[2][3]={{1.,3.5,4.1},{1.,3.5,4.1}}; или float[][]={{1.,3.5,4.1},{1.,3.5,4.1}};




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 468; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.