Начала программирования на языке Си, страница 13

Здесь мы указали, что константы IARRAY_MAX и FARRAY_MAX имеют значение 20 и 15 соответственно. Теперь при объявлении массивов. мы можем использовать их как размерность:

int iarray[IARRAY_MAX];  /*соответствуют int iarray[20] */

float farray[FARRAY_MAX];

char carray[FARRAY_MAX];

9.3. Инициализация массивов

При объявлении массивов возможна также их инициализация, т.е. присваивание начальных значений их элементам. Инициализация позволяет не указывать явно количество элементов массива, а только перечислить их начальные значения:

double d[ ]={1.0, 2.0, 3.5, 8.2, 9.5};

Здесь задан массив из пяти элементов, имеющих тип double, где d[0]=1.0, d[1]=2.0, d[2]=3.5, d[3]=8.2, d[4]=9.5.

9.4. Доступ к элементам массива

При объявлении переменной, в памяти машины происходит резервирование ячеек, а в специальную таблицу лексем программы заносится имя переменной и адрес связанных с ней ячеек памяти. Например, для переменной целого типа, объявленной как int iarr в памяти резервируется ячейка с именем iarr.

Если задается массив с тем же именем, например из семи элементов, с тем же именем int iarr[7], то происходит резервирование не одной, а семи ячеек  с тем же именем.

Теперь, если мы хотим обратиться к седьмому элемента массива, то мы должны указать его имя и номер iarr[6], а если мы хотим  присвоить седьмому элементу массива значение 25, мы также должны  указать его имя и номер:

iarr[6]=25;

То есть наибольшее значение номера элемента массива на единицу меньше числа объявленного количества элементов, содержащихся в массиве.

Присваивать значения элементам  массива можно также и при его инициализации, как было рассмотрено ранее или в процессе выполнения программы:

iarr[2]=3*iarr[6];

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

Доступ к элементам массива может осуществляться и таким способом:

tears[2*i+1]=tears[i]*smile[k+i];

smile[j]=sqrt(exp(a[m+3]));

Важно чтобы индексы элементов не выходили за пределы заданной длины массива

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

Под размерностью массива понимают число индексов, которое следует указать для получения доступа к отдельному элементу массива.

Массивы размерностью более единицы, называются многомерными.

Пример:

Присвоить значения 1, 3, 5, 7, 9 элементам третьей строки матрицы размерности 5*5.

Решение:  . Так будут представлены элементы матрицы, в случае, если нумерация ее элементов начинается с 0,0. На языке Си это будет выглядеть следующим образом:

a[2][0]=1, a[2][1]=3, a[2][2]=5, a[2][3]=7, a[2][4]=9.

Инициализация этого массива может осуществляться следующим образом:

#define  Rows 5

#define Columns 5

……………………….

int  a[Rows][Columns]

Присвоить начальные значения элементам третьей строки массива можно с помощью непараметрического цикла:

for(col=0; col<=4;col++)

{a[2][col]=2*col+1;

printf(“\n a[2,%2d]=%@d”,col,a[2][col]);}

результатом действия этого оператора будет:

a[2][0]=1

a[2][1]=3

a[2][3]=5

a[2][4]=7

a[2][5]=9.

Контрольные вопросы и задания

1. Что такое массивы и какими они обладают свойствами?

2. Найдите ошибки в следующем фрагменте программы:

# define z 12;

……………………

float   mass[z];

…………………….

for  (i=1;z=0;i<=0; i++)

{ mass[i]=z+1; …..

3. Как можно объявить массив? Приведите пример.

4. Инициализируйте двумерный массив размерности 3х3 с именем xmass.

5. Напишите как будут представлены следующие выражения на языке Си:

а) ;

б) ;

в) .


10. ФУНКЦИИ

Как уже было сказано ранее (см. гл. 2 «Структура программы на языке Си»)  программа состоит из директив препроцессора и функций (см. рис. 2.1 а)). Пока мы использовали только  одну из них – главную.

Что представляют собой другие функции – не главные, и зачем они нужны?

Эти не главные функции в некоторых языках программирования называются еще подпрограммами.