ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Декларация, инициализация и индексированиеВ декларациях массивам может приписываться класс памяти – static, auto или extern. Автоматические массивы инициировать нельзя. Внешние же и статические массивы можно инициировать, поместив в описании список инициирующих значений, заключенных в фигурные скобки и разделенных запятыми. Пример static int ndigit[] = {0, 0, 0, 0}; Под массив выделяется 4 ячейки, инициируемые 0-ми значениями.
Многомерные статические и внешние массивы также можно инициировать на основе вложенных списков в фигурных скобках. Если явная инициация отсутствует, гарантируется, что элементы внешних и статических массивов будут иметь значение 0; автоматические массивы будут заполнены «мусором». Если инициирующих значений меньше, чем указанный размер массива, то остальные элементы получат нулевые значения. Если же значений слишком много, то это ошибка. Пример static double [2][3] = {{1, 2, 3}, {4, 5, 6, 7}}; // ошибка!!!
Контроль допустимости значения индекса массива в процессе выполнения программы не выполняется. Пример int a[10], bad; ……………… bad = a[10]; /*выход за пределы индекса не контролируется*/ Для автоматического массива большая вероятность того, что случайное значение будет занесено в ячейку bad. Для внешнего массива тоже большая вероятность такого исхода. Все зависит от того, куда адресуется индексированная переменная a[10]. Если сегмент защищен по чтению, то будет прерывание. Обычно защита только по записи. Не нашли, что искали? Воспользуйтесь поиском:
|