Home > Article > Backend Development > 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.
#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])); }
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.
#include <stdio.h> struct myStruct { int x; float y; char z; }; int main() { struct myStruct str1 = {.y = 2.324, .z = 'f', .x = 78}; struct myStruct str2 = {.z = 'r'}; printf ("x = %d, y = %f, z = %c</p><p>", str1.x, str1.y, str1.z); printf ("z = %c</p><p>", str2.z); }
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!