Основы программирования для автоматизированного проектирования и решения творческих задач. Романенко А.В - 20 стр.

UptoLike

Составители: 

Для первого элемента массива индекс равен нулю. В записи индексированной переменной квадратные скобки являются опе-
рацией с двумя операндами, выполняемой по правилам адресной арифметики. Здесь имя массиваконстантный указатель,
являющийся адресом начала массива в основной памяти ЭВМ, а индексвыражение целого типа, являющееся смещением от
начала массива. Эта операция аналогична операции обращения по адресу:
*(имя_массива + индекс).
Так как сложение коммутативно, то эта операция эквивалентна записи
*(индекс + имя_массива).
Таким образом, выражение имя_массива[индекс] адресует тот же элемент в памяти, что и выражение ин-
декс[имя_массива].
Многомерный массив в языке С представляется как массив массивов. Определяется он следующим образом:
тип имя_массива [N1][N2];
Разрешается создавать массивы до тридцать второй степени вложенности.
Многомерные массивы инициализируются по строкам по возрастанию номеров элементов.
П р и м е р 14
int A[2][3] = {0, 1, 2, 3};
В указанном примере элементы массива получат следующие значения: A[0][0] = 0; A[0][1] = 1; A[0][2] = 2; A[1][0] = 3;.
В случае, когда надо изменить порядок инициализации элементов массива, используют фигурные скобки, выделяющие
элементы, предназначенные для одной строки.
П р и м е р 15
int A[4][3] = {{0}, {1, 2}, {3, 4, 5}};
здесь элементы списка инициализации расположатся в следующем порядке: A[0][0] = 0; A[1][0] = 1; A[1][1] = 2; A[2][0] = 3;
A[2][1] = 4; A[2][2] = 5; остальные элементы массива начальных значений не получили.
При обращении к элементам массива можно пользоваться операцией обращения по адресу. Для элемента массива
В[i][j][k] такая конструкция примет вид
*(*(*(B + i ) + j ) + k ) или *(B[i][j] + k ).
Устройство массивов в языке С позволяет связать с указателем как явно определенный массив, так и динамический
массив. В любом случае массив будет представлять собой последовательность ячеек известной длины указанного базового
типа, а указатель связывается с адресом первого элемента массива.
П р и м е р 16
int A[5], *Pa = A;
Доступ к элементам массива с помощью указателя может осуществляться двумя способами:
1) с помощью операции разыменования указателя '*'
*Pa;
здесь необходимо перемещаться по области памяти, выделенной под массив с помощью аддитивных операций '+' и '-' или
унарных '++' и '--'. Этот метод неприемлем для динамического массива, так как может быть утерян адрес его начала;
2) с помощью операции индексирования элементов массива '[ ]'
Pa[i];
Так как имя А ассоциируется с адресом начала массива в памяти, а указатель Pa содержит этот адрес, то операция индекси-
рования может одинаково применяется к этим объектам. A[0] адресует тот же элемент массива, что и Pa[0].
Для работы со стоками предусмотрено несколько функций, описанных в заголовочном файле string.h:
char *strcat(char *Sp, char *Si); – приписывает строку Si к строке Sp;
int strcmp(char *Str1, char *Str2); – сравнивает строки Str1 и Str2;
Результат будет меньше нуля, если Str1 < Str2, будет равен нулю, если строки равны и будет больше нуля, если Str1 > Str2 .
unsigned strlen(char *Str); – вычисляет длину строки в байтах.
В заголовочном файле stdio.h описаны функции:
int sscanf(char *S, char *format [, argument,...]); – функция форматированного извлечения информации из строки S;
int sprint(char *S, char *format [, argument,...]); – функция форматированной записи информации в строку S.