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

Designated initializer in C language

王林
Release: 2023-09-01 08:49:06
forward
872 people have browsed it

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};
Copy after login

This is equivalent to:

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

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

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

This is equivalent to:

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

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]));
}
Copy after login

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
Copy after login

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);
}
Copy after login

Output

x = 78, y = 2.324000, z = f
z = r
Copy after login

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!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template