Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
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

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date