Designated Initializers

Designated Initializers

Another new feature in C99 is called designated initializers. Designated initializers enable you to initialize specific array elements without having to initialize the entire array. For example, suppose you have an array of five elements and you want to initialize only its second and fourth elements, while leaving the remaining elements uninitialized. In C++ and C89 you can’t do that. However, C99 defines a new syntactic construct that enables you to do it:

 int arr[5] = {[1]=10,[3]=20}; // designated initializers

In the above declaration, the members arr[1] and arr[3] are initialized to 10 and 20, respectively, while all the remaining elements of arr are left uninitialized. This feature is particularly useful for manipulating sparse arrays.C99 also defines a special form of designators that initialize struct and union members. For example:

 struct Person{ char name[20]; int ID; int age; FILE *record;};Person p = {.ID=0, .record=NULL};

In this example, the elements name and age are uninitialized. Remember that designated initializers are supported only in C99. However, because many C++ compilers are also C compilers, C++ compilers may add this new feature as a non-standard extension.


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist