STRUCTURES AND UNIONS IN C













STRUCTURES AND UNIONS

        C SUPPORTS A CONSTRUCTED DATA TYPE KNOWN AS STRUCTURES, A MECHANISM FOR PACKING DATA OF DIFFERENT TYPES. A STRUCTURE IS A CONVENIENT TOOL FOR HANDLING A GROUP OF LOGICALLY RELATED DATA ITEMS. ANOTHER RELATED CONCEPT KNOWN AS UNIONS.







STRUCTURE

     STRUCTURE MUST BE DEFINED FIRST FOR THEIR FORMAT THAT MAY BE USED LATER TO DECLARE STRUCTURE VARIABLES.






GENERAL FORM  :

STRUCT   TAG_NAME

{

   DATA TYPE  MEMBER1;

   DATA TYPE  MEMBER2;

-----------------------------
-----------------------------
-----------------------------
-----------------------------

};










EXAMPLE : 

                     STRUCT BOOK_BANK
                       
                     {

                           CHAR   TITLE [ 20 ];

                           CHAR   AUTHOR [ 15 ];

                           INT    PAGES;

                           FLOAT   PRICE;

                       };


           THE KEYWORD STRUCT DECLARES A STRUCTURE TO HOLD THE DETAILS OF FOUR DATA FIELDS, NAMELY TITLE, AUTHOR, PAGES AND PRICE. THESE FIELDS ARE CALLED STRUCTURE ELEMENTS OR MEMBERS. EACH MEMBER MAY BELONG TO A DIFFERENT TYPE OF DATA. BOOK_BANK IS THE NAME OF THE STRUCTURE AND IS CALLED THE STRUCTURE TAG. THE TAG NAME MAY BE USED SUBSEQUENTLY TO DECLARE VARIABLES THAT HAVE THE TAG'S STRUCTURE.




DECLARING STRUCTURE VARIABLES

         A STRUCTURE VARIABLE DECLARATION IS SIMILAR TO THE DECLARATION OF VARIABLES OF ANY OTHER DATA TYPES. IT INCLUDES THE FOLLOWING ELEMENTS.






  1.  THE KEYWORD STRUCT.
  2.  THE STRUCTURE TAG NAME.
  3.  LIST OF VARIABLE NAMES SEPARATED BY COMMAS.
  4.  A TERMINATING SEMICOLON.

FOR EXAMPLE,

STRUCT      BOOK_BANK
  
{

      CHAR   TITLE [ 20 ];

     CHAR   AUTHOR [ 15 ];

      INT   PAGES;

      FLOAT   PRICE;

};
                  
STRUCT BOOK_BANK BOOK1, BOOK2, BOOK3;         



ACCESSING STRUCTURE MEMBERS

      WE CAN ACCESS AND ASSIGN VALUES TO THE MEMBERS OF A STRUCTURE IN A NUMBER OF WAYS. THEY SHOULD  BE LINKED TO THE STRUCTURE VARIABLE IN ORDER TO MAKE THEM MEANINGFUL MEMBERS. THE LINK BETWEEN A MEMBER AND A VARIABLE IS ESTABLISHED USING THE MEMBER OPERATOR ' . ' WHICH IS KNOWN AS DOT OPERATOR.






EXAMPLE  :

                    BOOK1 . PRICE



STRUCTURE INITIALIZATION

     LIKE ANY OTHER DATA TYPE, A STRUCTURE VARIABLE CAN BE INITIALIZED AT COMPILE TIME.






EXAMPLE  :

MAIN ( )

{

STRUCT   ST_RECORD

{

      INT   WEIGHT;

      FLOAT   HEIGHT;

};

STRUCT ST_RECORD STUDENT1={ 60, 180, 75 };

STRUCT ST_RECORD STUDENT2={ 53, 170, 60 };

 ----------------------------
 ----------------------------
 ----------------------------

}




ARRAYS OF STRUCTURES

    WE USE STRUCTURES TO DESCRIBE THE FORMAT OF A NUMBER OF RELATED VARIABLES.WE MAY DECLARE AN ARRAY OF STRUCTURES, EACH ELEMENT OF THE ARRAY REPRESENTING A STRUCTURE VARIABLE.






EXAMPLE  :

STRUCT   MARKS

{

      INT    SUBJECT1;

      INT    SUBJECT2;

      INT    SUBJECT3;
      
};

MAIN ( )

{

STRUCT   MARKS  STUDENT [ 3 ] = 
          
      { { 45, 68, 81 }, { 75, 53, 68 }, { 57, 39, 72 } };




ARRAYS WITHIN STRUCTURES

        C PERMITS THE USE OF ARRAYS AS STRUCTURE MEMBERS. WE CAN USE SINGLE DIMENSIONAL OR MULTI DIMENSIONAL ARRAYS OF TYPE INT OR FLOAT.






EXAMPLE  :

                      STRUCT   MARKS

                       {

                          INT NUMBER;

                          FLOAT SUBJECT [ 3 ];

                       }  STUDENT [ 2 ];





STRUCTURES WITHIN STRUCTURES

        STRUCTURES WITH IN STRUCTURE MEANS NESTING OF STRUCTURES. NESTING OF STRUCTURES IS PERMITTED IN C.






EXAMPLE  :

                     STRUCT   SALARY

                      {

                         CHAR  NAME;
                
                          CHAR  DEPARTMENT;

                           STRUCT  

                            {

                                    INT   HOUSE_NUMBER;

                                    INT   HOUSE_RENT;

                                    INT    CITY;

                            }

                             ALLOWANCE;

                    }

                      EMPLOYEE;



 UNIONS

            UNION ARE A CONCEPT BORROWED FROM STRUCTURES AND THEREFORE FOLLOW THE SAME SYNTAX AS STRUCTURES. THE MEMBERS OF A UNION USE THE SAME STORAGE LOCATION. A UNION MAY CONTAIN MANY MEMBERS OF DIFFERENT TYPES, IT CAN HANDLE ONLY ONE MEMBER AT A TIME. A UNION CAN BE DECLARED USING THE KEYWORD UNION.






EXAMPLE  :

                      UNION   ITEM

                      {

                           INT   M;

                           FLOAT   X;

                           CHAR  C;

                       }   CODE;
      



         THIS DECLARES A VARIABLE CODE OF TYPE UNION ITEM. THE UNION CONTAINS THREE MEMBERS, EACH WITH A DIFFERENT DATA TYPE. WE CAN USE ONE OF THEM AT A TIME. THIS IS DUE TO THE FACT THAT ONLY ONE LOCATION IS ALLOCATED FOR A UNION VARIABLE, IRRESPECTIVE OF ITS SIZE.








BIT FIELDS

     BIT FIELDS ALLOW DIRECT MANIPULATION OF STRING OF A STRING  OF PRESELECTED BITS AS IT REPRESENTED AN INTEGRAL QUANTITY. A BIT FIELD IS A SET OF ADJACENT BITS WHOSE SIZE CAN BE FROM 1 TO 16 BITS IN LENGTH. A WORD CAN THEREFORE BE DIVIDED IN TO A NUMBER OF BIT FIELDS. THE NAME AND SIZE OF BIT FIELDS ARE DEFINED USING A STRUCTURE.






GENERAL FORM  :


STRUCT  TAG_NAME

{

   DATA TYPE   NAME1 :  BIT_LENGTH;

   DATA TYPE   NAME2 :  BIT_LENGTH;

   ----------------------------------------
   ----------------------------------------
   ----------------------------------------

   DATA TYPE  NAMEN :  BIT_LENGTH;

}        










FOR MORE C PROGRAMS AND TUTORIALS PLEASE SUBSCRIBE MY YOUTUBE CHANNEL









CODE MASTER










                      




Comments