Объявления массивов и указателей. Массив представляет собой набор данных одного типа. Формат определения массива следующий:
тип_данных имя_массива[размер_массива];
Например, для представления данных о температуре можно воспользоваться следующим описанием:
int Temperatura[7];
Массив можно инициализировать во время определения:
int Temperatura[7]={ 20, 21, 17,16,27,22,19};
Если массив инициализируется, то его размер можно не указывать, например:
char Error[]=”Ошибка, файл не найден!”;
Многомерные массивы задаются указанием нескольких размеров, каждый из которых заключен в квадратные скобки:
double koordinate[8][2];
Такое описание определяет таблицу, содержащую два столбца и 8 строк.
При инициализации таких массивов можно не указывать только размер самого левого индекса:
int iarray[][3]={ {1,2,3},{9,11,4},{100,200,300}};
Многомерные массивы хранятся в памяти компьютера последовательно. Они группируются в порядке индексов, от правого к левому. В предыдущем примере элементы расположены следующим образом:
iarray[0][0],iarray[0][1],iarray[0][2],iarray[1][0],…,
iarray[2][1],iarray[2][2].
ДОСТУП К ЭЛЕМЕНТАМ МАССИВА
Для доступа к элементу массива используется его имя, за которым следует номер элемента (индекс), заключенный в квадратные скобки, например:
for (int idx=0;idx<7;idx++)
s+=Temperatura[idx];
Нумерация элементов массива начинается с нуля. Т.е. индекс массива определяет смещение используемого элемента относительно начала массива.
ПРОЦЕДУРЫ И ФУНКЦИИ
Каждое объявление процедуры или функции содержит заголовок, за которым следует блок. Процедура активизируется с помощью оператора процедуры. Функция активизируется при вычислении выражения, содержащего вызов функции, и возвращаемое функцией значение подставляется в это выражение. В данной главе обсуждаются различные способы объявлений процедур или функций и их параметры.
ОБЪЯВЛЕНИЕ ПРОЦЕДУР
Объявление процедуры позволяет связать идентификатор с блоком процедуры. Процедуру можно активизировать с помощью оператора вызова процедуры.
Проц <имя_процедуры>
( [<список_формальных_параметров>] )
[Оператор_1]
[Оператор_2]
...
[Оператор_N]
Кон Проц
СИГНАТУРА ПРОЦЕДУРЫ − имя процедуры и список её формальных параметров.
Запуск процедуры осуществляется с помощью оператора вызова процедуры, в котором содержатся имя процедуры и список фактических параметров. Операторы, которые должны выполняться при запуске процедуры, используются в операторной части процедуры (в теле процедуры). Если в содержащемся в процедуре операторе используется идентификатор этой же процедуры, то процедура будет выполняться рекурсивно (будет при выполнении обращаться сама к себе).
ОПРЕДЕЛЕНИЕ ФУНКЦИИ
В общем случае определение функции имеет следующий формат:
<возвращаемый тип> Имя_Функции ( параметры)
{
//Здесь следует тело функции,
//состоящее из операторов
}
Тип возвращаемого значения может быть одним из рассмотренных нами типов. Тип void означает, что функция не возвращает никакого значения. Кроме того, функция может возвращать и другие типы, например определенные пользователем. Если тип возвращаемого значения не указан, то по умолчанию он предполагается целочисленным (int). В списке параметров указываются имя и тип для каждой переменной, элементы списка разделяются запятыми. Для функций, которые не используют параметров, может быть вставлено ключевое слово void на месте списка параметров. Обратите внимание, что знак “точка с запятой” не ставится после списка параметров.
ПЕРЕДАЧА МАССИВОВ ФУНКЦИЯМ
Массивы можно передавать функциям. Для этого необходимо в объявлении параметров функции после имени массива поставить пару квадратных скобок:
int function(double a[],int size);
Обратите внимание, что размерность массива в функцию автоматически не передается. Это можно сделать, используя второй параметр, как показано в предыдущем примере.
При вызове функции необходимо просто указать имя фактического параметра:
x=function(myarray,50);
Функция получает доступ ко всем элементам массива и может их изменять. Для запрета изменения можно добавить модификатор const:
int function(const double a[],int size);