Home  >  Article  >  Backend Development  >  Designated initializer in C language

Designated initializer in C language

王林
王林forward
2023-09-01 08:49:06856browse

Designated initializer in C language

In the C90 standard, we have to initialize the array in a fixed order, such as initializing the index at position 0, 1, 2, etc. Starting with the C99 standard, they introduced designated initialization functionality in C. Here we can initialize elements in random order. Initialization can be done using array indexes or structure members. This extension is not implemented in GNU C.

If we specify some indexes and enter some values, then it will look like this -

int arr[6] = {[3] = 20, [5] = 40}; or
int arr[6] = {[3]20, [5]40};

This is equivalent to:

int arr[6] = {0, 0, 0, 20, 0, 40};

We can also put some using the following syntax Element range: [first … last] = value.

int arr[6] = {[2 … 4] = 10};

This is equivalent to:

int arr[6] = {0, 0, 10, 10, 10, 0};

If the size of the array is not defined, then the size can be obtained starting from the maximum index position. Let's take a look at the code to get a better idea.

Sample code

#include <stdio.h>
int main() {
   int Array[] = {10, 20, 30, [3 ... 9] = 100, [10] = 65, 15, [80] = 50, [42] = 400 };
   int i;
   for (i = 0; i < 20; i++)
      printf("%d ", Array[i]);
      printf("</p><p>Array[%d] = %d</p><p>",80, Array[80]);
      printf("Array[%d] = %d</p><p>",42, Array[42]);
      printf("Size of this array: %ld</p><p>", sizeof(Array) / sizeof(Array[0]));
}

Output

10 20 30 100 100 100 100 100 100 100 65 15 0 0 0 0 0 0 0 0
Array[80] = 50
Array[42] = 400
Size of this array: 81

This specified initialization can also be performed on structure or union type objects. For them, we can initialize the variables using the name of the member variable in any order followed by a dot (.) at the beginning. To get a clear idea, check the code below.

Sample code

#include <stdio.h>
struct myStruct {
   int x;
   float y;
   char z;
};
int main() {
   struct myStruct str1 = {.y = 2.324, .z = &#39;f&#39;, .x = 78};
   struct myStruct str2 = {.z = &#39;r&#39;};
   printf ("x = %d, y = %f, z = %c</p><p>", str1.x, str1.y, str1.z);
   printf ("z = %c</p><p>", str2.z);
}

Output

x = 78, y = 2.324000, z = f
z = r

The above is the detailed content of Designated initializer in C language. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete