Jump to content

Инициализация (программирование)

(Перенаправлено из списка инициализаторов )

В компьютерном программировании инициализация или инициализация это присвоение начального значения объекту данных или переменной. Способ выполнения инициализации зависит от языка программирования , а также типа, класса памяти и т. д. инициализируемого объекта. Программные конструкции, выполняющие инициализацию, обычно называются инициализаторами и списками инициализаторов . Инициализация отличается от объявления (и предшествует ему) , хотя на практике их иногда можно объединить. Дополнением к инициализации является финализация , которая в основном используется для объектов, а не для переменных.

Инициализация выполняется либо путем статического внедрения значения во время компиляции, либо путем присвоения во время выполнения . Раздел кода, выполняющий такую ​​инициализацию, обычно известен как «код инициализации» и может включать в себя другие, одноразовые функции, такие как открытие файлов; в объектно-ориентированном программировании код инициализации может быть частью конструктора (метод класса) или инициализатора (метод экземпляра). Установка ячейки памяти в шестнадцатеричные нули также иногда называется «очисткой» и часто выполняется с помощью исключающей инструкции или (оба операнда указывают одну и ту же переменную) на уровне машинного кода , поскольку она не требует дополнительного доступа к памяти.

Семья языков C

[ редактировать ]

Инициализатор

[ редактировать ]

В C/C99/C++ инициализатор является необязательной частью декларатора . Он состоит из символа «=», за которым следует выражение или список выражений, разделенных запятыми, заключенных в фигурные скобки (фигурные скобки). Последний список иногда называют «списком инициализаторов» или «списком инициализации» (хотя термин «список инициализаторов» формально зарезервирован для инициализации членов класса/структуры в C++; см. ниже ). Объявление, которое создает объект данных, а не просто описывает его существование, обычно называется определением .

Многие находят удобным проводить различие между терминами «объявление» и «определение», как в часто встречающейся фразе «различие между объявлением и определением ...», подразумевая, что объявление просто обозначает объект данных (или функцию). ). Фактически, согласно стандарту C++ , определение — это объявление. Тем не менее, использование «объявления и определения», хотя и формально неверное, является распространенным явлением. [1] Хотя все определения являются декларациями, не все декларации являются определениями.

Примеры С:

int i = 0;
int k[4] = {0, 1};
char tx[3] = 'a';
char ty[2] = 'f';
struct Point {int x; int y;} p = { .y = 13, .x = 7 };

Примеры С++:

int i2(0);
int j[2] = {rand(), k[0]};
MyClass* xox = new MyClass(0, "zaza");
point q = {0, i + 1};

Список инициализаторов

[ редактировать ]

В C++ конструктор класса/структуры может иметь список инициализаторов внутри определения, но до тела конструктора. Важно отметить, что при использовании списка инициализации значения не присваиваются переменной. Они инициализируются. В приведенном ниже примере 0 инициализируется в re и im. Пример:

struct IntComplex {
  IntComplex() : re(0), im(0) {}

  int re;
  int im;
};

Здесь конструкция  : re(0), im(0) это список инициализаторов.

Иногда термин «список инициализаторов» также используется для обозначения списка выражений в инициализаторе массива или структуры.

В C++11 предусмотрена более мощная концепция списков инициализаторов с помощью шаблона, называемого std::initializer_list .

Инициализация по умолчанию

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ Часто задаваемые вопросы по C++ , Клайн, Ломоу и Жиру, Аддисон-Уэсли, 1999, ISBN   0-201-30983-1 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b8f0d30a9fce146eabc439ae2b47031c__1713098700
URL1:https://arc.ask3.ru/arc/aa/b8/1c/b8f0d30a9fce146eabc439ae2b47031c.html
Заголовок, (Title) документа по адресу, URL1:
Initialization (programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)