С ограничивает индексный тип целыми
Язык С ограничивает индексный тип целыми числами; вы указываете, сколько компонентов вам необходимо:
C |
float temp[Max];
а индексы неявно изменяются от 0 до числа компонентов без единицы, в данном случае от 0 до 3. Язык C++ разрешает использовать любое константное выражение для задания числа элементов массива, что улучшает читаемость программы:
C++ |
float temp [last+ 1];
Компоненты массива могут быть любого типа:
C |
Car_Data database [100];
В языке Ada (но не в С) на массивах можно выполнять операции присваивания и проверки на равенство:
type A_Type is array(0..9) of Integer;
Ada |
if A = В then A := C; end if;
Как и в случае с записями, в языке Ada для задания значений массивов, т. е. для агрегатов, предоставляется широкий спектр синтаксических возможностей :
Ada |
А := (0..4 => 1 , 5..9 => 2); -- Половина единиц, половина двоек
А := (others => 0); -- Все нули
В языке С использование агрегатов массивов ограничено заданием начальных значений.
Наиболее важная операция над массивом — индексация, с помощью которой выбирается элемент массива. Индекс, который может быть произвольным выражением индексного типа, пишется после имени массива:
type Char_Array is array(Character range 'a'.. 'z') of Boolean;
Ada |
C: Character:= 'z';
A(C):=A('a')andA('b');
Другой способ интерпретации массивов состоит в том, чтобы рассматривать их как функцию, преобразующую индексный тип в тип элемента. Язык Ada (подобно языку Fortran, но в отличие от языков Pascal и С) поощряет такую точку зрения, используя одинаковый синтаксис для обращений к функции и для индексации массива. То есть, не посмотрев на объявление, нельзя сказать, является А(1) обращением к функции или операцией индексации массива.