русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Инициализация


Дата добавления: 2015-01-16; просмотров: 518; Нарушение авторских прав


Описатель может указывать начальное значение описываемо-го идентификатора. Инициализатор состоит из выражения илизаключенного в фигурные скобки списка значений, перед кото-рыми ставится знак =. Инициализатор: = выражение = \(список-инициализатора\) = \(список-инициализатора,\) список-инициализатора: выражение список-инициализатора,список-инициализатора \(список-инициализатора\) Все выражения, входящие в инициализатор статической иливнешней переменной, должны быть либо константными выражения-ми, описываемыми в п. 23, Либо выражениями, которые сводятсяк адресу ранее описанной переменной, возможно смещенному наконстантное выражение. Автоматические и регистровые перемен-ные могут быть инициализированы произвольными выражениями,включающими константы и ранее описанные переменные и функ-ции. Гарантируется, что неинициализированные статические ивнешние переменные получают в качестве начальных значений0;неинициализированные автоматические и регистровые перемен-ные в качестве начальных значений содержат мусор. Когда инициализатор применяется к скаляру (указателю илиобъекту арифметического типа), то он состоит из одного выра-жения, возможно заключенного в фигурные скобки. Начальноезначение объекта находится из выражения; выполняются те жесамые преобразования, что и при присваивании. Когда описываемая переменная является агрегатом (струк-турой или массивом ), то инициализатор состоит из заключен-ного в фигурные скобки и разделенного запятыми списка иници-ализаторов для членов агрегата. Этот список составляется впорядке возрастания индекса или в соответствии с порядкомчленов. Если агрегат содержит подагрегаты, то это правилоприменяется рекурсивно к членам агрегата. Если количествоинициализаторов в списке оказывается меньше числа членов аг-регата, то оставшиеся члены агрегата заполняются нулями.Запрещается инициализировать объединения или автоматическиеагрегаты. Фигурные скобки могут быть опущены следующим образом.Если инициализатор начинается с левой фигурной скобки, топоследующий разделенный запятыми список инициализаторов ини-циализирует члены агрегата; будет ошибкой, если в спискеокажется больше инициализаторов, чем членов агрегата. Еслиоднако инициализатор не начинается с левой фигурной скобки,то из списка берется только нужное для членов данного агре-гата число элементов; оставшиеся элементы используются дляинициализации следующего члена агрегата, частью которого яв-ляется настоящий агрегат. Последнее сокращение допускает возможность инициализациимассива типа CHAR с помощью строки. В этом случае члены мас-сива последовательно инициализируются символами строки. Например, INT X[] = \(1,3,5\); описывает и инициализирует X как одномерный массив; посколь-ку размер массива не специфицирован, а список инициализиторасодержит три элемента, считается, что массив состоит из трехчленов. Вот пример инициализации с полным использованием фигур-ных скобок: FLOAT *Y[4][3] = \( ( 1, 3, 5 ), ( 2, 4, 6 ), ( 3, 5, 7 ), \); Здесь 1, 3 и 5 инициализируют первую строку массива Y[0], аименно Y[0][0], Y[0][1] и Y[0][2]. Аналогичным образом сле-дующие две строчки инициализируют Y[1] и Y[2]. Инициализаторзаканчивается преждевременно, и, следовательно массив Y[3]инициализируется нулями. В точности такого же эффекта можнобыло бы достичь, написав FLOAT Y[4][3] = \( 1, 3, 5, 2, 4, 6, 3, 5, 7 \); Инициализатор для Y начинается с левой фигурной скобки, ноинициализатора для Y[0] нет. Поэтому используется 3 элементаиз списка. Аналогично следующие три элемента используютсяпоследовательно для Y[1] и Y[2]. следующее описание FLOAT Y[4][3] = \( (1), (2), (3), (4) \); инициализирует первый столбец Y (если его рассматривать какдвумерный массив), а остальные элементы заполняются нулями. И наконец, описание CHAR MSG[] = "SYNTAX ERROR ON LINE %S\N"; демонстрирует инициализацию элементов символьного массива спомощью строки.


<== предыдущая лекция | следующая лекция ==>
Описание структур и объединений | Имена типов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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