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.- THE KEYWORD STRUCT.
- THE STRUCTURE TAG NAME.
- LIST OF VARIABLE NAMES SEPARATED BY COMMAS.
- 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;
}
CODE MASTER
Comments
Post a Comment