It has been suggested that this article be merged into Declaration (computer science). (Discuss) Proposed since May 2010. |
In computer programming, initialization is the assignment of an initial value for a data object. The way how initialization is performed depends on programming language, as well as type, storage class, etc., of an object to be initialized.
Programming constructs which perform initialization are typically called initializers and initializer lists.
C family of languages
Initializer
In C/C99/C++, an initializer is an optional part of a declarator. It consists of the '=' character followed by an expression or a comma-separated list of expressions placed in curly brackets (braces). The latter list is sometimes called the "initializer list" or "initialization list", although the term "initializer list" is formally reserved for initialization of class/struct members in C++, see below.
A declaration which includes initialization is commonly called definition.
Many find it convenient to draw a distinction between the terms "declaration" and "definition", as in the commonly seen phrase "the distinction between a declaration and definition...", implying that a declaration merely designates a data object (or function). In fact, according to the C++ standard, a definition is a declaration. Still, the usage "declarations and definitions", although formally incorrect, is common.[1]
Examples:
- int i = 0;
- int i2(0);
- int k[4] = {0, 1};
- int j[2] = {rand(), k[0]};
- char tx[3]="fa";
- char ty[2]="fa";
- MyClass* xox = new MyClass (0, "zaza");
- struct point {int x; int y;} p = {rand(), i};
- point q = {0, i+1};
Initializer list
A constructor of a class/struct can have an initializer list within the definition but prior to the constructor body. It assigns initial values to the members of the class/struct object. Example:
- struct int_complex {int re, im; complex() : re(0), im(0) { }};
Here, the construct " : re(0), im(0)" is the initializer list.
Sometimes the term "initializer list" is also used to refer to the list of expressions in the array or struct initializer.
The coming new C++ standard, C++0x, provides for a more powerful concept of initializer lists, by means of a template, called std::initializer_list.
Default initialization
Data initialization may occur without explicit syntax in a program to do so. For example, if static variables are declared without an initializer, then those of primitive data types are initialized with the value of zero of the corresponding type, while static objects of class type are initialized with their default constructors.
References
- ^ C++ FAQs, by Cline, Lomow, and Girou, Addison-Wesley, 1999, ISBN 0-201-30983-1.