Языки программирования - концепции и принципы

в том, что структура данных


Преимущество общего синтаксиса в том, что структура данных может быть первоначально реализована как массив, а позже, если понадобится более сложная структура данных, массив может быть заменен функцией без измене­ния формы обращения. Квадратные скобки вместо круглых в языках Pascal и С применяются в основном для облегчения работы компилятора.

     Записи и массивы могут вкладываться друг в друга в произвольном поряд­ке, что позволяет создавать сложные структуры данных. Для доступа к отдель­ному компоненту такой структуры выбор поля и индексация элемента должны выполняться по очереди до тех пор, пока не будет достигнут компо­нент:

typedef int A[1 0];                         /* Тип массив */                                   

C

typedef struct {                             /* Тип запись */

А     а;                                          /* Массив внутри записи */

char  b;

}   Rec;



Rec   r[10];                                  /* Массив записей с массивами типа int внутри */

 int    i,j,k;

k = r[i+l].a[j-1];                            /* Индексация, затем выбор поля,затем индексация */

                                                      /* Конечный результат — целочисленное значение */

Обратите внимание, что частичный выбор и индексация в сложной струк­туре данных дают значение, которое само является массивом или записью:

C

г                          Массив записей, содержащих массивы целых чисел      

r[i]                       Запись, содержащая массив целых чисел

r[i].a                    Массив целых чисел

r[i].a[j]                 Целое

и эти значения могут использоваться в операторах присваивания и т.п.

5.3. Массивы и контроль соответствия типов

 

Возможно, наиболее общая причина труднообнаруживаемых ошибок — это индексация, которая выходит за границы массива:

inta[10],

C

for(i = 0;

i<= 10; i

a[i] = 2*i;

Цикл будет выполнен и для i = 10, но последним элементом массива является а[9].


Содержание раздела