Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Определение и объявление одномерных массивов. Иницициализация одномерных массивов при их определении. Доступ к элементам массива

Определение и объявление массивов

При работе с переменными, являющимися массивами, следует различать его объявление и определение. Здесь имеет место полная аналогия с обычными переменными. Определение массива позволяет компьютеру выделить память. Определение массива должно содержать информацию, достаточную для выделения памяти. Каждый массив должен иметь только одно определение. На количество объявлений массива ограничений нет. Отличительным признаком объявления является наличие в нем зарезервированного слова extern.

 

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

Общий формат определения одномерного массива в стиле стандарта С89 имеет следующий:

<α> <b>[<γ>] = <μ>;

Здесь α- тип элементов, хранящихся в массиве; b - имя массива, [..] – оператор индексирования; γ – константное выражение, определяющее размер памяти, выделяемой для хранения элементов массива Конструкция «= <μ>» используется для инициализации массива; μ – список инициализаторов.

Обращает на себя внимание использование в объявлении и в определении массива оператора индексные скобки

Для обращения к отдельным элементам одномерного массива имеет сдующий формат:

<b>[<σ>]

Здесь b - имя массива, [] – оператор индексные скобки, σ- арифметическое целочисенное выражение, значение которого определяет индекс элемента.

 

Пример 1 Определение глобального и локального массива.

#define MSIZE1 20
int x[MSIZE];
int main(void)
{
double z[5];
z[0] = 10;

}

В этом примере имеются опредеделения двух одномерных массивов. Первый массив (x) является глобальным. Он предназначен для хранения 20 элементов типа. int. В связи с тем, что определение этого массива находится вне функций, его элементы в момент выделения памяти будут обнулены. Второй массив (z) является локальным. Он предназначен для хранения 5 элементов типа. double. Элементы этого массива будут содержать «мусор». В теле функции main() с помощью оператора присваивания элементу массива z с нулевым индексом присваивается значение 10.

 

Пример 2. Определение и объявление массивов.

Пусть в некоторой программе имеются два модуля. В первом модуле содержится функция main(), а во втором модуле c с именем module содержатся объявление и опрелеление массива x.

 

// Первый модуль
#inclde “module.h”
int main(void)
{
// Работаем с массивом x
x = 10;
}
// Второй модуль (module). Интерфейсный файл module.h
#define MSIZE 20
extern x[]; // Это объявление массива x

// Второй модуль. Файл реализации module.c
#include “module1.c”
int x[MSIZE];// Здесь выделяется память для массива x


В интерфейсном файле module.h содержится объявление массива x. а в файле реализации module.c находится определение массива x. Функция полчает доступ к этому массиву, что позволяет ей записать в элемент x[0] значение 10.

Пример 3. Инициализация массива во время определения

Рассмотрим программный код, приведенный ниже.

#define MSIZE 5
int main(void)
{
int x1[MSIZE] = {1, 3, 5, 7, 9};
int x2[MSIZE] = {1, 3, 5};
int x3[MSIZE] = {1, 3, 5, 7, 9, 11};// Ошибка
int x4[] = {1, 3, 5, 7, 9};
int x5[MSIZE] = {0};
}

 

В рассматриваемом коде объявлено пять массивов. Все массивы имеют одинаковый размер, определяемый константой MSIZE, равной 5. Здесть количество элементов в массиве совпадает с количеством инициализаторов. При объявлении массива x1 список инициализации содержит 5 констант. Элемент x1[0] этого массива инциализируется первой константой, равной 1, затем элемент x1[1] инициализируется константой 2 и т. д. Наконец, элемент x1[4] инициализируется последней константой из списка инициализации, равной 9. Количество элементов массива и количество инциализаторов может не совпадать. Если количество элементов массива превышает количество инициализаторов, то элементы массива, для которых «не хватило» инициализаторов обнуляются. Например, x2[3] == x2[4] == 0; Случай, когда инициализаторов превышает количество элементов массива, рассматривается как ошибочный. При компиляции определения массива x3 будет выдано сообщение об ошибке. Заметим, что при наличии списка инициализации размер требуемой памяти можно не указывать, что, и сделано при определении массива x4.

<== предыдущая лекция | следующая лекция ==>
Массивы в стиле языка С89 | Решение. Определение и инициализация двумерных массивов
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 330; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.