Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Nov 6, 2000

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.

Danny Kalev
Comment and Contribute








