This blog is under construction

Wednesday 8 January 2014

Array of unions

We can create array of unions similar to creating array of any primitive data type. Below is the general form of declaration for array of union.
union  <union_name>  <array_name>[size];

Consider the following example,
union values {
int int_val;
float float_val;
};
union values arr[2];

Here, arr is an array of union which can hold two union elements.

Array of union initialization:
Let us see how to initialize array of union.

union values arr[2] = {{1}, {2}};
The above statement initializes first union member of both the array elements.

union values arr[2] = {{.float_val = 1.1}, {.float_val = 2.2}};
The above statement initialized second union member of both the array elements.

How to access union members?
Now, let us see how to access union members in the array element.

arr[0].float_val = 2.2;
Dot operator(access operator) is used to access union array element's data member.

Note:
In union, only one data member will be active at a time.
Size of a union is the size of its biggest data(union) member.

Array of unions example in C

  #include <stdio.h>
  union values {
        int integer_val;  // union member
        float float_val;  // union member
  };

  int main() {
        /* array of unions initialization */
        union values arr1[2] = {{10}, {20}};
        union values arr2[2] = {{.float_val = 10.01}, 
                                {.float_val = 20.02}};

        /* printing the array contents */
        printf("arr1[0].integer_val: %d\n", arr1[0].integer_val);
        printf("arr1[1].integer_val: %d\n", arr1[1].integer_val);

        printf("arr2[0].float_val: %f\n", arr2[0].float_val);
        printf("arr2[1].float_val: %f\n", arr2[1].float_val);

        /* printing the size of the union */
        printf("Sizeof(union values): %d\n", sizeof(union values));
        return 0;
  }

  Output:
  jp@jp-VirtualBox:~/$ ./a.out
  arr1[0].integer_val: 10
  arr1[1].integer_val: 20
  arr2[0].float_val: 10.010000
  arr2[1].float_val: 20.020000
  Sizeof(union values): 4




3 comments:

  1. Nice article admin thanks for share your atricle keep share your knowledge i am waiting for your new post check mens winter jackets polo shirts kindly review and reply me

    ReplyDelete
  2. KissAsian is Asian Dramas Platform where you can find all Korean, Chinese, Japanese dramas.

    Gogoanime | Watch gogo anime online, English anime online HD


    Watch Online Movies Online Bollywood Movies Latest Hollywood Movies Online Hindi Movies Dubbed Movies Tamil Movies Download Latest new Movie

    ReplyDelete
  3. Hello Everyone !

    USA SSN Leads/Dead Fullz available, along with Driving License/ID Number with good connectivity.

    All SSN's are Tested & Verified.

    **DETAILS IN LEADS/FULLZ**

    ->FULL NAME
    ->SSN
    ->DATE OF BIRTH
    ->DRIVING LICENSE NUMBER
    ->ADDRESS WITH ZIP
    ->PHONE NUMBER, EMAIL
    ->EMPLOYEE DETAILS

    *Price for SSN lead $2
    *You can ask for sample before any deal
    *If you buy in bulk, will give you discount
    *Sampling is just for serious buyers

    ->Hope for the long term business
    ->You can buy for your specific states too

    **Contact 24/7**

    Whatsapp > +923172721122

    Email > leads.sellers1212@gmail.com

    Telegram > @leadsupplier

    ICQ > 752822040

    ReplyDelete