0% found this document useful (0 votes)
19 views13 pages

Unions, Enumerations, and Typedef in C

This document provides an overview of structures in programming, including their definitions, declaration, member access, and assignment. It also discusses arrays of structures, passing structures to functions, and the use of structure pointers for efficient memory management. Key examples and syntax are included to illustrate these concepts.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views13 pages

Unions, Enumerations, and Typedef in C

This document provides an overview of structures in programming, including their definitions, declaration, member access, and assignment. It also discusses arrays of structures, passing structures to functions, and the use of structure pointers for efficient memory management. Key examples and syntax are included to illustrate these concepts.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

MODULE 5- UNIONS, ENUMERATIONS, & TYPEDEF

Structures
1 . D e fin it io n :
- A s t ru c t u re is a c o lle c t io n o f v a ria b le s u n d e r o n e n a m e .
- U s e d t o g ro u p re la te d d a ta t o g e t h e r.
- M e m b e rs ( o r f ie ld s ) a re t he va ria b le s in s id e t h e s t ru c t u re .

2 . D e c larin g a S tru c tu re :
s t ru c t ta g _n a m e {
t y p e m e m b e r1 ;
t y p e m e m b e r2 ;
. ..
};
- E xa m p le :
s tru c t a d d r {
c h a r n a m e [3 0 ];
c h a r s tre e t [4 0 ];
c h a r c it y [2 0 ];
c h a r s ta t e [ 3 ];
u n s ig n e d lo n g in t z ip ;
};

3 . D e c larin g S t ru c tu re V a ria b le s :
- A fte r d e c la rin g s t ru c t u re t y p e , c re a te in s t a n c e s (va ria b le s ) :
s tru c t a d d r a d d r_in fo ;
- M u ltip le va ria b le s a t o n c e :
s tru c t a d d r a d d r_in fo , b in fo , c in fo ;

4 . A c c e s s in g S t ru c t u re M e m b e rs :
- U s e d o t o p e ra t o r (.)
- E xa m p le :
a d d r_ in fo .z ip = 1 2 3 4 5 ;
p rin tf( "% lu " , a d d r_in fo . zip ) ;
- A c c e s s a rra y m e m b e r in s id e s t ru c t u re :
g e ts ( a d d r_ in f o .n a m e );
fo r(t = 0 ; a d d r_ in fo . na m e [t] ; + + t )
p u t c h a r(a d d r_in fo .n a m e [t ]);

5 . A n o n y m o u s S t ru c tu re s :
- I f o n ly o n e v a ria b le n e e d e d , s tru c tu re t a g is o p t io n a l:
s tru c t {
c h a r n a m e [3 0 ];
c h a r s tre e t [4 0 ];
c h a r c it y [2 0 ];
c h a r s ta t e [ 3 ];
u n s ig n e d lo n g in t z ip ;
} a d d r_in fo ;

6 . G e n e ra l F o rm :
s t ru c t ta g {
t y p e m e m b e r1 ;
t y p e m e m b e r2 ;
. ..
} s tru c tu re _ va ria b le s ;
- E it h e r t a g o r va ria b le n a m e c a n b e o m itt e d , n o t b o th .

7 . S t ru c t u re A s s ig n m e n t :
- A s s ig n o n e s t ru c t u re to a n o th e r o f th e s a m e t y p e in o n e s t a te m e n t :
s tru c t { in t a ; in t b ; } x, y ;
x. a = 1 0 ;
y = x ; / / a ll m e m b e rs c o p ie d
p rin tf( "% d " , y .a ); // O u t p u t : 1 0

Array of structures
1 . A rra y s o f S t ru c t u re s :
- S t ru c t u re s c a n b e o rg a n ize d in a rra y s .
- S y n t a x:
s tru c t s t ru c t _t y p e a rra y _n a m e [ s iz e ] ;
- E xa m p le :
s tru c t a d d r a d d r_lis t [1 0 0 ]; / / a rra y o f 1 0 0 a d d r s tru c tu re s
2 . A c c e s s in g M e m b e rs in A rra y o f S tru c t u re s :
- A c c e s s a s tru c t u re in a rra y : a rra y _n a m e [in d e x ]
- A c c e s s m e m b e r o f t h a t s t ru c t u re : a rra y _n a m e [ in d e x ].m e m b e r
- E xa m p le :
p rin tf( "% lu " , a d d r_lis t[ 2 ]. zip ); / / Z IP o f 3 rd e le m e n t
a d d r_ lis t [2 ].n a m e [ 0 ] = 'X '; // F irs t c h a ra c t e r o f n a m e in 3 rd e le m e n t
3 . M a ilin g L is t P ro g ra m :
- S t o re s m u ltip le a d d re s s e s u s in g a rra y o f s t ru c t ure s .
- S t ru c t u re d e f in it io n :
s tru c t a d d r {
c h a r n a m e [3 0 ];
c h a r s tre e t [4 0 ];
c h a r c it y [2 0 ];
c h a r s ta t e [ 3 ];
u n s ig n e d lo n g in t z ip ;
} a d d r_lis t [M A X ];
4 . M a in Fu n c t io n :
- I nit ia liz e s t ru c tu re a rra y : in it_ lis t ()
- D is p la y m e n u : m e n u _ s e le c t( )
- R e s p o n d t o u s e r c h o ic e :
1 -> e n t e r()
2 -> d e le t e ()
3 -> lis t()
4 -> e x it( 0 )
5 . in it _lis t( ):
- P re p a re s s tru c t u re a rra y fo r u s e .
- S e ts firs t c h a ra c te r o f n a m e t o n u ll fo r a ll e le m e n ts :
fo r t = 0 t o M A X -1 :
a d d r_ lis t [t ]. na m e [0 ] = '\0 '

6 . m e n u_ s e le c t ():
- D is p la y s m e n u :
1 . En ter a n a m e
2 . D e le t e a n a m e
3 . Lis t t h e file
4 . Q u it
- R e a d s u s e r in p u t a n d re t u rn s c h o ic e ( 1 -4 )
7 . e n t e r():
- F in d s firs t fre e s lo t u s in g fin d _fre e ()
- P ro m p t s u s e r to in p u t n a m e , s t re e t, c ity , s t a t e , z ip
- S t o re s in p u t in a d d r_lis t [s lo t ]
8 . f in d _fre e ():
- L o o p s t hro u g h a d d r_ lis t to fin d u n u s e d s lo t (n a m e [0 ] = = '\ 0 ')
- R e t u rn s s lo t in d e x o r -1 if fu ll
9 . d e le te ():
- P ro m p t s fo r re c o rd n u m b e r
- S e ts a d d r_lis t[ s lo t ].n a m e [0 ] = '\ 0 ' t o m a rk a s d e le te d
1 0 . lis t ():
- L o o p s th ro u g h a d d r_ lis t
- P rin t s a ll fie ld s o f n o n -e m p t y s t ru c t u re s :
if a d d r_lis t [t] .n a m e [0 ] != '\ 0 ':
p rin t n a m e , s t re e t, c ity , s t a t e , z ip
11 . N otes:
- Z IP s t o re d a s u n s ig n e d lo n g in t (n u m e ric e xa m p le )
- A rra y in d e x s t a rts a t 0
- E a c h s tru c t u re in a rra y h as in d e p e n d e n t m e m b e rs
- S t ru c tu re a s s ig n m e n t c o p ie s a ll m e m b e rs a t o nc e

P a s s in g S tru c t u re t o F u n c t io n s
1 . P a s s in g s t ru c t u re m e m b e rs
- Y o u c a n p a s s in d ivid ua l m e m b e rs o f a s t ruc t u re to a fu n c tio n .
- T h e fu n c tio n o n ly re c e iv e s t h e va lu e o f th a t m e m b e r (n o rm a l c a ll b y v a lu e ).
- E x a m p le s :
fu n c (m ik e .x) → p a s s e s c h a ra c te r v a lu e
fu n c 2 (m ik e .y ) → p a s s e s in t e g e r va lu e
fu n c 3 (m ik e .z ) → p a s s e s flo a t va lu e
fu n c 4 (m ik e .s ) → p a s s e s a d d re s s o f s trin g
fu n c (m ik e .s [2 ]) → p a s s e s s in g le c h a ra c t e r

- T o p a s s t h e a d d re s s o f a m e m b e r → u s e & o p e ra to r:
fu n c (& m ik e .x) → a d d re s s o f c h a r
fu n c 2 (& m ik e .y ) → a d d re s s o f in t
fu n c 3 (& m ik e .z ) → a d d re s s o f flo a t
fu n c 4 (m ik e .s ) → s trin g a lre a d y g iv e s a d d re s s
fu n c (& m ik e . s [2 ] ) → a d d re s s o f s in g le c h a ra c t e r

2 . P a s s in g E n tire s t ru c tu re

- A n e n tire s t ru c tu re c a n b e p as s e d t o a fu n c t io n .
- S t ru c tu re s a re p a s s e d b y v a lu e (c o p y o f s tru c t u re is m a d e ).
- A n y c h a ng e in s id e t h e fu n c tio n d o e s N O T a ff e c t t h e o rig in a l s t ru c t u re .

3 . R u le s fo r p a s s s in g s t ruc t u re

- T h e t y p e o f a rg u m e n t m u s t e xa c t ly m a tc h th e ty p e o f p a ra m e t e r.
- S im p ly h a vin g t h e s a m e m e m b e rs is n o t e n o u g h → th e ty p e n a m e s m u s t
m a tc h .
- S t ru c tu re t y p e s h o u ld b e d e c la re d g lo b a lly if m u ltip le f u n c t io n s n e e d to u s e it.

Structure pointers

D E F IN E : S tru c t u re P o in t e rs
- A p o in te r c a n s to re th e a d d re s s o f a s t ru c t u re va ria b le .
- S p e c ia l o p e ra to r (-> ) is u s e d t o a c c e s s m e m b e rs v ia p o in t e r.

D E C L A R E : S t ru c t u re P o in te r
s t ru c t a d d r { ... }
s t ru c t a d d r * a d d r_ p o in t e r
U S E S o f S tru c t u re P o in t e rs
1 . P a s s s t ru c t u re t o fu n c t io n s b y re fe re n c e
2 . C re a t e d y n a m ic d a t a s tru c tu re s (lin k e d lis t , tre e s )

W H Y U s e S tru c t u re P o in t e rs ?
- P a s s in g fu ll s t ru c t u re = s lo w (a ll m e m b e rs c o p ie d t o s t a c k )
- P a s s in g p o in t e r = o n ly a d d re s s p a s s e d (fa s t, m e m o ry e ffic ie nt )
- P o in t e r a llo w s fu n c tio n t o m o d if y o rig in a l s t ru c tu re c o n t e n t s

G E T A d d re s s o f S t ru c tu re
s t ru c t b a l p e rs o n
s t ru c t b a l * p
p = & p e rs o n / / p n o w p o in ts t o p e rs o n

A C C E SS M e m b e rs
C A S E 1 : D ire c t s t ru c t ure v a ria b le → u s e d o t (.)
p e rs o n .b a lan c e
C A S E 2 : P o in t e r t o s t ru c t u re → u s e a rro w (-> )
p -> b a la n c e
N O T E : (-> ) is s h o rt h a n d fo r (* p ).m e m b e r

E X A M P L E ID E A (S o ftw a re T im e r)
- D e fin e s t ru c tu re m y _ tim e {h o u rs , m in u t e s , s e c o n d s }
- In m a in () : c re a te s y s tim e = {0 ,0 ,0 }
- P a s s & s y s tim e t o fu n c t io n s u p d a te () a n d d is p la y ( )
- u p d a t e (): m o d ifie s s y s t im e via p o in t e r (t -> s e c o n d s , t -> m in u t e s , t -> h o u rs )
- d is p la y ( ): p rin t s s y s tim e va lu e s
- d e la y (): s im u la te s re a l-tim e t ic k in g

R U LE
- U s e (.) w h e n w o rk ing d ire c tly w it h s tru c t u re
- U s e (-> ) w h e n w o rk in g w ith s t ru c t ure p o in t e r
Arrays and structures within structures
N O TE:
E x a m p le : if(t -> h o u rs = = 2 4 ) t-> h o u rs = 0 ;
→ T h is t e lls c o m p ile r:
- t a k e a d d re s s o f t (p o in t s to s y s tim e in m a in )
- re s e t h o u rs t o ze ro .

R U LE S U M M A R Y :
- U s e D O T (.) o p e ra t o r:
w h e n w o rk in g d ire c t ly w it h a s t ru c t ure v a ria b le .
E x a m p le : p e rs o n . h o u rs
- U s e A R R O W (-> ) o p e ra to r:
w h e n w o rk in g w it h a p o in te r t o a s tru c tu re .
E x a m p le : p -> ho u rs

UNIONS

D E F IN IT IO N :
- A u n io n is a m e m o ry lo c a tio n s h a re d b y tw o o r m o re va ria b le s o f d iffe re n t
d a t a ty p e s .
- It a llo w s in t e rp re t in g t h e s a m e m e m o ry (b it p a tt e rn ) in m u ltip le w a y s .

SYN TAX:
u n io n t a g {
t y p e m e m b e r1 ;
t y p e m e m b e r2 ;
.. .
} v a ria b le _ n a m e ;

E X A M P L E D E C L A R A T IO N :
u n io n u _t y p e {
in t i;
c h ar c h ;
};
u n io n u _t y p e c n v t; // c re a t e s u n io n va ria b le

M EM O RY RULES:
- A ll m e m b e rs s h a re th e s am e m e m o ry lo c a tio n .
- S ize o f u n io n = s iz e o f it s la rg e s t m e m b e r.
- E x a m p le : if in t = 2 b y t e s a n d c h ar = 1 b y t e → u n io n s ize = 2 b y te s .

A C C E SS I N G M E M B E R S :
- U s e D O T o p e ra t o r w h e n w o rk in g d ire c t ly w it h a u n io n .
E x a m p le : c n vt .i = 1 0 ;
- U s e A R R O W o p e ra t o r w h e n w o rk in g w ith a p o in te r t o a u n io n .
E x a m p le : u n -> i = 1 0 ;

C H A R A C T E R I S TI C S :
- A t a tim e , o n ly o n e m e m b e r h o ld s a v alid v a lu e (s in c e m e m o ry is s h a re d ).
- C h a n g in g o n e m e m b e r m a y o v e rw rit e t h e va lu e o f a n o t h e r.
U S E S O F U N IO N S :
- U s e fu l in t y p e c o n v e rs io n s .
- C a n re in t e rp re t s t o re d d a ta in d iffe re n t fo rm a t s .
- H e lp fu l fo r h a n d lin g lo w -le ve l m e m o ry t as k s (lik e b y te m a n ip u la t io n ).

EX A M P LE USE C ASE:
- W ritin g a s h o rt in t e g e r (2 b y te s ) to a file b y te b y b y t e .
- D e fin e u n io n w it h :
s h o rt in t i;
c h a r c h [2 ];
- S t o re s h o rt in t e g e r in i, t h e n a c c e s s e a c h b y t e t h ro u g h c h [ 0 ] a n d c h [1 ] .
- T h is a llo w s w rit ing in t e g e r d a t a u s in g s ta n d a rd c h a ra c t e r fu n c t io n s .

BIT-FIELDS

D E F IN IT IO N :
- A b it -fie ld a llo w s a c c e s s t o in d iv id u a l b it s in m e m o ry .
- M u s t b e d e fin e d in s id e a s t ru c t u re ( o r un io n ).
- U s e fu l w h e n y o u w a n t t o p a c k m ult ip le B o o le a n o r s m a ll in te g e r v a lu e s int o
a s in g le b y t e /w o rd .

SYN TAX:
t y p e n a m e : le n g t h ;

w h e re ,
type = in t , s ig n e d , u n s ig n e d (o r _ B o o l in C 9 9 )
nam e = fie ld id e n t ifie r
le n g th = n u m b e r o f b it s u s e d f o r t h e fie ld

USES:
- S a ve s to ra g e (p a c k m u lt ip le fla g s in t o o n e b y t e ).
- A c c e s s s ta t u s /c o n t ro l b it s fro m h a rd w a re d e vic e s .
- E n c ry p t io n / lo w -le ve l o p e rat io n s re q u irin g b it m a n ip u la t io n .

EX A M P LE STATUS B YTE :
B it M e a n in g
0 C h a n g e in c le a r-t o -s e n d
1 C h a n g e in d a t a -s e t -re ad y
2 T ra ilin g e d g e d e te c t e d
3 C h a n g e in re c e ive lin e
4 C le a r-to -s e n d
5 D a ta -s e t -re a d y
6 T e le p h o n e rin g in g
7 R e c e ive d s ig n a l

STRU CTUR E EX A M P LE:


s t ru c t s t a t u s _t y p e {
u n s ig n e d d e lta _ c t s : 1 ;
u n s ig n e d d e lta _ d s r : 1 ;
u n s ig n e d t r_ e d g e : 1;
u n s ig n e d d e lta _ re c : 1 ;
u n s ig n e d c t s : 1;
u n s ig n e d d s r : 1;
u n s ig n e d rin g : 1;
u n s ig n e d re c _ lin e : 1 ;
} sta tu s;

A C C E SS I N G B I T -F IE L D S :
- U s e D O T o p e ra t o r if a c c e s s in g d ire c t ly .
E x a m p le : s ta t u s .rin g = 0 ; // c le a rs "rin g "
- U s e A R R O W o p e ra t o r if u s in g a p o in t e r t o s t ru c tu re .
E x a m p le : p -> c t s

S K IP P IN G U N U S E D B IT S :
- Y o u c a n le a ve fie ld s u n n a m e d t o s k ip .
E x a m p le :
s t ru c t s t a t u s _t y p e {
u n s ig n e d : 4 ; / / s k ip firs t 4 b it s
u n s ig n e d c t s : 1 ;
u n s ig n e d d s r : 1 ;
} s ta t u s ;

M IX IN G W IT H N O R M A L M E M B E R S :
s t ru c t e m p {
s t ru c t a d d r a d d re s s ;
flo a t p a y ;
u n s ig n e d la y _o ff : 1 ; / / 1 b it
u n s ig n e d h o u rly : 1 ; / / 1 b it
u n s ig n e d d e d u c tio n : 3 ; // 3 b it s
};

→ T h is s t o re s e m p lo y e e inf o in ju s t 1 b y te (ins t e a d o f 3 ).

R E S T R IC T IO N S :
- C a n n o t t a k e t h e a d d re s s o f a b it -fie ld .
- B it-fie ld s c a n n o t b e a rra y s .
- M a c h in e -d e p e n d e n t o rd e rin g (le ft -to -rig h t o r rig h t -t o -le ft) .
- Im p le m e n ta t io n -s p e c ific lim its m a y e xis t .

SUM M ARY :
B it-fie ld s = c o m p a c t , e f fic ie n t w a y t o s t o re m u lt ip le fla g s /v a lu e s
w it h in a s in g le s t o ra g e u n it.

TOPIC: ENUMERATIONS

D E F IN IT IO N :
- A n e n u m e ra t io n (e nu m ) = a s e t o f n a m e d in te g e r c o n s t a n ts .
- E a c h s y m b o l re p re s e n t s a n in te g e r v a lue .
- M a k e s c o d e m o re re a d a b le ( n a m e s in s t e a d o f n u m b e rs ).

SYN TAX:
e nu m t ag { e n u m e ra t io n _ lis t } v a ria b le _lis t;

- " ta g " = o p t io n a l t y p e n am e .
- " e n u m e ra t io n _lis t" = lis t o f n a m e d c o n s t a n ts .
- " va ria b le _ lis t " = o p t io n a l lis t o f va ria b le s .

EX A M P LE:
e nu m c o in { p e n n y , n ic k e l, d im e , q u a rte r, ha lf_ d o lla r, d o lla r };
e nu m c o in m o n e y ;

m o n e y = d im e ;
if (m o n e y = = q u a rt e r) → t ru e / fa ls e c o m p a ris o n .

D E F A U L T V A LU E S :
- F irs t s y m b o l = 0 .
- E a c h n e x t s y m b o l = p re v io u s va lu e + 1 .

E x a m p le :
p en n y = 0
n ic k e l = 1
d im e = 2
q ua rt e r = 3 ...

C U S T O M V A LU E S :
- Y o u c a n a s s ig n c u s t o m va lu e s w ith " = ".
- L at e r s y m b o ls c o n t in u e fro m t h e c u s to m v a lu e .

E x a m p le :
e n um c o in { p e n n y , n ic k e l, d im e , q u a rte r= 1 0 0 , h a lf_d o lla r, d o lla r };

p en n y = 0
n ic k e l = 1
d im e = 2
q ua rt e r = 1 00
h a lf_d o lla r = 1 0 1
d o lla r = 1 02

IM P O R T A N T N O T E :
- E n u m s y m b o ls = in t e g e rs , N O T s t rin g s .
- C a n n o t d ire c t ly p rin t na m e s w it h p rin t f(" % s " , s y m b o l).
- C a n n o t a s s ig n s t rin g s lik e s t rc p y ( m o n e y , " d im e " ).

O U T P U T O P T IO N S :
1 . U s e s w itc h -c a s e :
s w itc h (m o n e y ) {
c a se pe nny: p rin t " p e n n y ";
c a s e n ic k e l: p rin t " nic k e l" ;
c a s e d im e : p rin t " d im e " ;
c a s e q u a rt e r: p rin t "q u a rt e r" ;
c a s e h a lf _d o lla r: p rin t " h a lf _d o llar" ;
c a s e d o lla r: p rin t " d o llar" ;
}

2 . U s e s t rin g a rra y w it h e n u m v a lu e s a s in d e x:
c h ar n a m e s [][ 1 2 ] = {" p e n ny ","n ic k e l","d im e ","q u a rt e r" ," h a lf_d o lla r" ," d o lla r" };
p rin t n a m e s [ m o n e y ];

N O T E : W o rk s o nly if e n u m s are s e q u e n tia l (n o c u s t o m va lu e s ).

USES O F ENUM :
- M a k e s c o d e s e lf-e xp la n a t o ry (n a m e s ins t e a d o f n u m b e rs ).
- O f te n u s e d in :
* C o m p ile r s y m b o l t a b le s
* S t at u s c o d e s
* M o d e / s e t tin g s d e fin it io n s
* S w it c h-c a s e lo g ic
- B e s t w h e n n o d ire c t s t rin g c o n v e rs io n is re q u ire d .

SUM M ARY :
- E n u m = na m e d int e g e r c o n s t a nt s .
- D e fa u lt s t a rt s fro m 0 , in c re m e n ts b y 1 .
- S u p p o rt s c u s to m v a lu e s .
- O u t p u t re q u ire s m a n u a l s t rin g m a p p in g (s w it c h o r a rray ).

Using sizeof to ensure portability

D e fin it io n :
-> s ize o f is a n o p e ra to r in C th a t c o m p u t e s t h e s ize (in b y t e s ) o f a n y v a ria b le
o r d a t a ty p e .
-> It h e lp s w rite p o rt a b le c o d e b y a v o id in g m a c h in e -d e p e n d e n t a s s u m p t io n s .
-> E s p e c ia lly us e fu l fo r s tru c tu re s a n d u n io n s , w h e re s ize s m a y va ry d u e t o
p a d d in g o r a lig n m e n t .

E x a m p le D a t a T y p e S iz e s (o n a s a m p le s y s t e m ):
c ha r → 1 b yte
in t → 4 b ytes
d o u b le → 8 b y te s

S y n t a x:
s ize o f( va ria b le )
s ize o f( d a t a ty p e )

E x a m p le :
c ha r c h ;
in t i;
d o u b le f;

p rin t f(" % d " , s ize o f( c h )); / / p rin t s 1


p rin t f(" % d " , s ize o f( i)) ; / / p rin t s 4
p rin t f(" % d " , s ize o f( f)); // p rin ts 8

S t ru c tu re s :
-> Siz e o f a s t ru c t ure ≥ s u m o f s iz e s o f it s m e m b e rs .
-> M a y b e la rg e r d u e t o p a d d in g fo r w o rd / p a ra g ra p h a lig n m e n t .

E x a m p le :
s t ru c t s {
c ha r ch; / / 1 b y te
in t i; / / 4 b y te s
d o u b le f ; // 8 bytes
} s _v a r;

s ize o f( s _v a r) ≥ 1 3 (m a y b e m o re d u e t o p a d d in g )

→ A lw a y s u s e s iz e o f ins t e a d o f m a n u a lly a d d in g m e m b e r s ize s .


E x a m p le (d y n a m ic a llo c a tio n ) :
s t ru c t s * p ;
p = m a llo c (s ize o f (s tru c t s ));

U n io ns :
-> Siz e o f a u n io n = s iz e o f it s la rg e s t m e m b e r.
-> A t ru n t im e , it d o e s n ’ t m a t te r w h ic h m e m b e r is a c t ive .

E x a m p le :
u n io n u {
c ha r ch; / / 1 b y te
in t i; / / 4 b y te s
d o u b le f ; // 8 bytes
} u_ v a r;

s ize o f( u _v a r) = 8 (s iz e o f la rg e s t m e m b e r: d o u b le )

K e y P o in t s :
- s ize o f is a c o m p ile -tim e o p e ra t o r.
- H e lp s a v o id m a c h in e -d e p e n d e n t a s s u m p tio n s .
- A lw a y s u s e s ize o f fo r s t ru c t ure s /u n io n s in s te a d o f m a n u a l c a lc u la t io n .
- F o r u n io n s , s ize o f is e q u a l t o t h e la rg e s t m e m b e r’ s s iz e .

Typedef
D e fin it io n :
-> ty p e d e f a llo w s y o u to d e f in e n e w na m e s (a lia s e s ) fo r e xis t in g d a t a ty p e s .
-> It d o e s n o t c re a te a n e w t y p e , o nly a n e w n a m e fo r a n e xis t in g o n e .
-> U s e f ul fo r:
- M a k in g c o d e m o re p o rt a b le ( m a c h in e -d e p e n d e n t t y p e s c a n b e re n a m e d
e a s ily ).
- M a k in g c o d e m o re re a d a b le (d e s c rip tiv e ty p e n a m e s ).

G e n e ra l S y n t a x:
t y p e d e f e x is t in g _ ty p e n e w _ n a m e ;

E x a m p le 1 :
t y p e d e f flo a t b a la n c e ;
b a la n c e o v e r_ d u e ; / / o ve r_d u e is o f ty p e flo a t

E x a m p le 2 (c h a inin g t y p e d e fs ):
t y p e d e f b a la n c e o ve rd ra ft;
/ / o v e rd ra ft is a n o th e r n a m e fo r b ala n c e , w h ic h is a n o th e r n a m e fo r flo at .

K e y P o in t s :
- t y p e d e f g ive s a n a lt e rn a te n am e f o r a t y p e , n o t a re p la c e m e n t.
- H e lp s in s e lf-d o c u m e n tin g t h e c o d e .
- M a k e s p o rt in g p ro g ra m s e a s ie r (c h a n g e o n ly ty p e d e fs w h e n m o v in g t o
a n o t h e r m a c h in e ).
- Y o u a re N O T c re a t in g a n e w p h y s ic a l t y p e , ju s t a n a lia s .

You might also like