пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Организация массивов в Си. Инициализация массивов.Особенности работы с массивами и обращения к элементам

белая методичка страница 15

Массивы и переменные с индексами

Понятие “массив” соответствует математическим понятиям “матрица” и ее частному случаю “вектору”. Элементы матриц  принято обозначать с использованием индексов. Существенно, что все элементы матрицы одинаковы: либо целые числа, либо вещественные, либо символы, либо другие объекты, введенные программистом (об этом позднее). Такая “однородность” элементов свойственна и массиву, объявление которого описывает тип элементов, имя массива и его размерность и размер, т. е. число индексов и количество значений, принимаемых каждым индексом.
Таким образом, массив можно определить как набор однотипных, пронумерованных объектов, располагающихся в соседних участках оперативной памяти. Обращение к элементам массива – с помощью индексов (номеров): а[i] – для одномерного массива, x[i][j] – для двумерного массива. Примеры объявлений массивов представлены ниже:

int Z[100]; // одномерный массив из 100 элементов типа int
char S[80]; // одномерный массив из 80 элементов типа char (строка)
float y[3][4];// двумерный массив из 12 элементов типа float

Нумерация любого индекса начинается  с нуля. Таким образом, элементы массива Z обозначаются: Z[0], Z[1], Z[2], … Z[99], элементы массива S обозначаются: S[0], S[1],…S[79], элементы массива y обозначаются: y[0][0], y[0][1], y[0][2], …y[2][3]. При обращении к элементам массива используются переменные с индексами. Например: Z[i], Z[1], y[i][j], y[1][2]. При этом следует помнить, что транслятор не проверяет правильность значений индексов. Эта обязанность возлагается на программиста.

 

 

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

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

double y[] = {1.0, 2.0,3.0,4.0};
char str[] = “abcdef”

В данном примере длину массива компилятор вычисляет по количеству начальных значений, перечисленных в фигурных скобках. После такого объявления  элементам массива y присвоятся следующие значения: y[0]=1.0, y[1]=2.0, y[3]=3.0, y[4]=4.0. Количество элементов в символьном массиве на единицу больше, чем количество символов в строковой константе, использованной для инициализации. Последний элемент массива в таком случае всегда равен ‘\n’. Таким образом, массив str, будет состоять из семи элементов и им присвоятся следующие значения:  
str[0]=’a’, str[1]= ‘b’, str[2]=’c’, str[3]=’d’, str[4]=’e’, str[5]=’f’, str[6]=’\n’.

Если количество начальных значений меньше, чем объявленная длина массива, то начальные значения примут только первые элементы массива:

int z[10] = {1,2,3,4};

В этом примере будут определены значения только элементов z[0], z[2], z[3], z[4]. Остальные элементы определены не будут.

Пример инициализации двумерного массива представлен ниже:

int x[2][3] = {{1,2,3},{4,5,6}};

 После такого объявления  элементам массива присвоятся следующие значения: x[0][0] =1, x[0][1] =2, x[0][2] =3, x[1][0] =4, x[1][1] =5, x[1][2] =6. Тот же результат можно получить с одним списком инициализации:

 int x[2][3] = {1,2,3,4,5,6};

 

Все элементы любого массива размещаются в памяти компьютера последовательно, занимая соседние участки памяти. На рис.4 показано размещение двумерного массива
int х[2][3] в памяти компьютера. На этом же рисунке показаны значения инициализированных элементов.

 


21.06.2017; 21:36
хиты: 69
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь