You are on page 1of 64

Bi 1 : Cu Trc Ca Mt Chng Trnh C++

C l mt trong nhng cch tt nht bt u hc mt ngn ng lp trnh l bng mt ch !ng trnh" #$ %$ l ch !ng trnh u t&'n c() ch*ng t) +
// my first program in C++ #include <iostream.h> int main () { cout << "Hello World!"; return 0; } Hello World!

Ch !ng trnh tr'n %$ l ch !ng trnh u t&'n m hu h,t nhng ng -& hc ngh. lp trnh /&,t u t&'n / 0,t 1u2 c() n l /&,t c%u 345llo6 7orl83 l'n mn hnh" 9%$ l mt trong nhng ch !ng trnh !n g&2n nht c th /&,t bng C:: nh ng n ; b)o g<m nhng phn c! b2n m m& ch !ng trnh C:: c" 4;$ c=ng >5m >?t t@ng 8Ang mt +
// my first pr gram in C++

9%$ l 8Ang ch* thBch" Ct c2 cc 8Ang bt u bng h)& 8u DE FGGH Ic co& l ch*t thBch m ch*ng 0hng c bt 0 mt 2nh h Jng no ,n hoKt ng c() ch !ng trnh" Ch*ng c th Ic cc lp trnh /&'n 8=ng g&2& thBch h)$ bnh phLm b'n trong m; ngu<n c() ch !ng trnh" Crong tr -ng hIp n$6 8Ang ch* thBch l mt g&2& thBch ngn gn nhng g m ch !ng trnh ch*ng t) lm"
#include <iostream.h>

Cc c%u bt u bng 8u FMH Ic 8=ng cho pr5proc5DDor F)& 8Nch h t& t@ n$ /O&H" Ch*ng 0hng ph2& l nhng 8Ang m; thPc h&Qn nh ng Ic 8=ng bo h&Qu cho trnh 8Nch" R %$ c%u lQnh #include <iostream.h> bo cho trnh 8Nch b&,t cn ph2& 3&nclu853 th /&Qn i str!am" 9%$ l mt th /&Qn /o r) c! b2n trong C:: / n ph2& Ic 3&nclu853 / n D Ic 8=ng trong ch !ng trnh" 9%$ l cch cE &n DS 8Tng th /&Qn i str!am
int main ()

UAng n$ t !ng Vng /O& phn bt u 0h)& bo hm main" 4m main l &m m tt c2 cc ch !ng trnh C:: bt u thPc h&Qn" W 0hng phT thuc /o /N trB c() hm n$ FJ u6 cu& h)$ J g&) c() m; ngu<nH m n& 8ung c() n lun Ic thPc h&Qn u t&'n 0h& ch !ng trnh bt u" Ch'm /o 6 8o ngu$'n nh%n n& tr'n6 m& ch !ng trnh C:: .u ph2& t<n tK& mt hm main" Ch5o D)u main l mt cXp ngoXc !n bJ& / n l mt hm" Crong C::6 tt c2 cc hm m D)u l mt cXp ngoXc !n FH th c nghY) l n c th c hoXc 0hng c th)m D F0hng bt bucH" W& 8ung c() hm m)&n t&,p ng)$ D)u phn 0h)& bo chBnh thVc Ic b)o trong cc ngoXc nhn F # $ H nh trong /B 8T c() ch*ng t)

cout << "Hello World";

UAng lQnh n$ lm /&Qc 1u)n trng nht c() ch !ng trnh" c ut l mt 8Ang FDtr5)mH output chuLn trong C:: Ic Nnh nghY) trong th /&Qn i str!am / nhng g m 8Ang lQnh n$ lm l gS& chuZ& 0B tP "Hello World" r) mn hnh" Ch* [ rng 8Ang n$ 0,t th*c bng 8u chm phL$ F \ H" ]B tP n$ Ic 8=ng 0,t th*c mt lQnh / bt buc ph2& c D)u mZ& lQnh trong ch !ng trnh C:: c() bKn Fmt trong nhng lZ& phE b&,n nht c() nhng lp trnh /&'n C:: l 1u'n mt 8u chm phL$H"
return 0;

^Qnh r!turn 0,t th*c hm m)&n / tr2 /. m; & D)u n6 trong tr -ng hIp n$ l _" 9%$ l mt 0,t th*c bnh th -ng c() mt ch !ng trnh 0hng c mt lZ& no trong 1u trnh thPc h&Qn" Wh bKn D th$ trong cc /B 8T t&,p th5o6 %$ l mt cch phE b&,n nht 0,t th*c mt ch !ng trnh C::" Ch !ng trnh Ic cu tr*c thnh nhng 8Ang 0hc nh)u n trJ n'n 8` c h!n nh ng hon ton 0hng ph2& bt buc ph2& lm /$" #B 8T6 th)$ / /&,t
int main () { cout << " Hello World "; return 0; }

t) c th /&,t
int main () { cout << " Hello World "; return 0; }

cang cho mt 0,t 1u2 chBnh >c nh nh)u" Crong C::6 cc 8Ang lQnh Ic ph%n cch bng 8u chm phL$ F \H" #&Qc ch&) ch !ng trnh thnh cc 8Ang chb nhm cho n 8` c h!n m th&"

C%c ch th&ch"
Cc ch* thBch Ic cc lp trnh /&'n DS 8Tng gh& ch* h)$ m t2 trong cc phn c() ch !ng trnh" Crong C:: c h)& cch ch* thBch
// Ch /$ Ch th!ch theo d"n# th!ch theo %h&i $/

Ch* thBch th5o 8Ang bt u t@ cXp 8u >E FGGH cho ,n cu& 8Ang" Ch* thBch th5o 0h& bt u bng /* / 0,t th*c bng */ / c th b)o g<m nh&.u 8Ang" Ch*ng t) D th'm cc ch* thBch cho ch !ng trnh +
/* my second program in C++ with more comments */ Hello World! I'm a !! "ro#ram

#include <iostream.h> int main () { cout << "Hello World! "; // says Hello World! cout << "'(m a C)) *ro#ram"; // says I'm a C++ program return 0; }

W,u bKn /&,t cc ch* thBch trong ch !ng trnh m 0hng DS 8Tng cc 8u GG6 Gc h)$ cG6 trnh 8Nch D co& ch*ng nh l cc lQnh C:: / D h&n thN cc lZ&"

Bi 1 : Cu Trc Ca Mt Chng Trnh C++


C l mt trong nhng cch tt nht bt u hc mt ngn ng lp trnh l bng mt ch !ng trnh" #$ %$ l ch !ng trnh u t&'n c() ch*ng t) +
// my first program in C++ #include <iostream.h> int main () { cout << "Hello World!"; return 0; } Hello World!

Ch !ng trnh tr'n %$ l ch !ng trnh u t&'n m hu h,t nhng ng -& hc ngh. lp trnh /&,t u t&'n / 0,t 1u2 c() n l /&,t c%u 345llo6 7orl83 l'n mn hnh" 9%$ l mt trong nhng ch !ng trnh !n g&2n nht c th /&,t bng C:: nh ng n ; b)o g<m nhng phn c! b2n m m& ch !ng trnh C:: c" 4;$ c=ng >5m >?t t@ng 8Ang mt +
// my first pr gram in C++

9%$ l 8Ang ch* thBch" Ct c2 cc 8Ang bt u bng h)& 8u DE FGGH Ic co& l ch*t thBch m ch*ng 0hng c bt 0 mt 2nh h Jng no ,n hoKt ng c() ch !ng trnh" Ch*ng c th Ic cc lp trnh /&'n 8=ng g&2& thBch h)$ bnh phLm b'n trong m; ngu<n c() ch !ng trnh" Crong tr -ng hIp n$6 8Ang ch* thBch l mt g&2& thBch ngn gn nhng g m ch !ng trnh ch*ng t) lm"
#include <iostream.h>

Cc c%u bt u bng 8u FMH Ic 8=ng cho pr5proc5DDor F)& 8Nch h t& t@ n$ /O&H" Ch*ng 0hng ph2& l nhng 8Ang m; thPc h&Qn nh ng Ic 8=ng bo h&Qu cho trnh 8Nch" R %$ c%u lQnh #include <iostream.h> bo cho trnh 8Nch b&,t cn ph2& 3&nclu853 th /&Qn i str!am" 9%$ l mt th /&Qn /o r) c! b2n trong C:: / n ph2&

Ic 3&nclu853 / n D Ic 8=ng trong ch !ng trnh" 9%$ l cch cE &n DS 8Tng th /&Qn i str!am
int main ()

UAng n$ t !ng Vng /O& phn bt u 0h)& bo hm main" 4m main l &m m tt c2 cc ch !ng trnh C:: bt u thPc h&Qn" W 0hng phT thuc /o /N trB c() hm n$ FJ u6 cu& h)$ J g&) c() m; ngu<nH m n& 8ung c() n lun Ic thPc h&Qn u t&'n 0h& ch !ng trnh bt u" Ch'm /o 6 8o ngu$'n nh%n n& tr'n6 m& ch !ng trnh C:: .u ph2& t<n tK& mt hm main" Ch5o D)u main l mt cXp ngoXc !n bJ& / n l mt hm" Crong C::6 tt c2 cc hm m D)u l mt cXp ngoXc !n FH th c nghY) l n c th c hoXc 0hng c th)m D F0hng bt bucH" W& 8ung c() hm m)&n t&,p ng)$ D)u phn 0h)& bo chBnh thVc Ic b)o trong cc ngoXc nhn F # $ H nh trong /B 8T c() ch*ng t)
cout << "Hello World";

UAng lQnh n$ lm /&Qc 1u)n trng nht c() ch !ng trnh" c ut l mt 8Ang FDtr5)mH output chuLn trong C:: Ic Nnh nghY) trong th /&Qn i str!am / nhng g m 8Ang lQnh n$ lm l gS& chuZ& 0B tP "Hello World" r) mn hnh" Ch* [ rng 8Ang n$ 0,t th*c bng 8u chm phL$ F \ H" ]B tP n$ Ic 8=ng 0,t th*c mt lQnh / bt buc ph2& c D)u mZ& lQnh trong ch !ng trnh C:: c() bKn Fmt trong nhng lZ& phE b&,n nht c() nhng lp trnh /&'n C:: l 1u'n mt 8u chm phL$H"
return 0;

^Qnh r!turn 0,t th*c hm m)&n / tr2 /. m; & D)u n6 trong tr -ng hIp n$ l _" 9%$ l mt 0,t th*c bnh th -ng c() mt ch !ng trnh 0hng c mt lZ& no trong 1u trnh thPc h&Qn" Wh bKn D th$ trong cc /B 8T t&,p th5o6 %$ l mt cch phE b&,n nht 0,t th*c mt ch !ng trnh C::" Ch !ng trnh Ic cu tr*c thnh nhng 8Ang 0hc nh)u n trJ n'n 8` c h!n nh ng hon ton 0hng ph2& bt buc ph2& lm /$" #B 8T6 th)$ / /&,t
int main () { cout << " Hello World "; return 0; }

t) c th /&,t
int main () { cout << " Hello World "; return 0; }

cang cho mt 0,t 1u2 chBnh >c nh nh)u" Crong C::6 cc 8Ang lQnh Ic ph%n cch bng 8u chm phL$ F \H" #&Qc ch&) ch !ng trnh thnh cc 8Ang chb nhm cho n 8` c h!n m th&"

C%c ch th&ch"
Cc ch* thBch Ic cc lp trnh /&'n DS 8Tng gh& ch* h)$ m t2 trong cc phn c() ch !ng trnh" Crong C:: c h)& cch ch* thBch
// Ch /$ Ch th!ch theo d"n# th!ch theo %h&i $/

Ch* thBch th5o 8Ang bt u t@ cXp 8u >E FGGH cho ,n cu& 8Ang" Ch* thBch th5o 0h& bt u bng /* / 0,t th*c bng */ / c th b)o g<m nh&.u 8Ang" Ch*ng t) D th'm cc ch* thBch cho ch !ng trnh +
/* my second program in C++ with more comments */ #include <iostream.h> int main () { cout << "Hello World! "; // says Hello World! cout << "'(m a C)) *ro#ram"; // says I'm a C++ program return 0; } Hello World! I'm a !! "ro#ram

W,u bKn /&,t cc ch* thBch trong ch !ng trnh m 0hng DS 8Tng cc 8u GG6 Gc h)$ cG6 trnh 8Nch D co& ch*ng nh l cc lQnh C:: / D h&n thN cc lZ&"

Bi ' : C%c T %n T(
du) b& tr Oc ch*ng t) ; b&,t ,n DP t<n tK& c() cc b&,n / cc hng" Crong C::6 th)o tc /O& ch*ng t) DS 8Tng cc ton tS6 l cc t@ 0ho / cc 8u 0hng c trong b2ng ch c& nh ng lK& c tr'n hu h,t cc bn phBm tr'n th, g&O&" 4&u b&,t /. ch*ng l rt 1u)n trng / %$ l mt trong nhng thnh phn c! b2n c() ngn ng C::" T %n t( g%n )$*" Con tS gn 8=ng gn mt g& trN no cho mt b&,n
a + ,;

gn g& trN ngu$'n e cho b&,n a" #, tr& bt buc ph2& l mt b&,n cAn /, ph2& c th l bt 0 hng6 b&,n h)$ 0,t 1u2 c() mt b&u thVc" Cn ph2& nhn mKnh rng ton tS gn lun Ic thPc h&Qn t@ tr& D)ng ph2& / 0hng b)o g&- 2o ng Ic

a + -;

gn g& trN c() b&,n a bng g& trN )ng chV) trong b&,n +" Ch* [ rng ch*ng t) chb gn gi tr c() + cho ) / DP th)$ E& c() + D)u D 0hng 2nh h Jng ,n g& trN c() a" ft thuc tBnh c() ton tS gn trong C:: gp phn g&*p n / It l'n cc ngn ng lp trnh 0hc l /&Qc cho ph?p /, ph2& c th chV) cc ph?p gn 0hc" #B 8T+
a + . ) (- + ,);

t !ng !ng /O&


- + ,; a + . ) -;

# /$ b&u thVc D)u cang hIp lQ trong C::


a + - + c + ,;

gn g& trN e cho c2 b) b&,n a6 + / c C%c t %n t( s, h-c ) !% &% *% /% ' * Wgm ton tS D hc Ic hZ trI bJ& ngn ng l+

: h c G i

cng tr@ nh%n ch&) l$ phn 8 Ftrong ph?p ch&)H

ChV tP thPc h&Qn cc ton tS n$ cang g&ng nh ch*ng Ic thPc h&Qn trong ton hc" 9&.u 8u$ nht c /j h!& lK & /O& bKn l ph?p l$ phn 8 6 0[ h&Qu bng 8u phn trgm FiH" 9%$ chBnh l ph?p ton l$ phn 8 trong ph?p ch&) h)& D ngu$'n /O& nh)u" #B 8T6 n,u a $ (( ' );6 b&,n a D m)ng g& trN k / ll m ncn :k" C%c t %n t( g%n ph.c h/p )!$% &$% *$% /$% '$% >>$% <<$% *$% +$% ,$* ft Xc tBnh c() ngn ng C:: lm cho n nE& t&,ng l mt ngn ng D*c tBch chBnh l cc ton tS gn phVc hIp cho ph?p chbnh DS) g& trN c() mt b&,n /O& mt trong nhng ton tS c! b2n D)u+

-alue !$ increase; t !ng !ng /O& -alue $ -alue ! increase; a &$ .; t !ng !ng /O& a $ a & .; a /$ /; t !ng !ng /O& a $ a / /; "rice *$ units ! (; t !ng !ng /O& "rice $ "rice * (units ! ();

/ t !ng tP cho tt c2 cc ton tS 0hc" T0ng 1 gi2m" ft /B 8T 0hc c() /&Qc t&,t 0&Qm 0h& /&,t m; lQnh l ton tS tgng F::H / g&2m FhhH" Ch*ng tgng hoXc g&2m g& trN chV) trong mt b&,n & l" Ch*ng t !ng !ng /O& !$( hoXc &$(" # /$6 cc 8Ang D)u l t !ng !ng+

a)); a)+/; a+a)/;

ft tBnh cht c() ton tS n$ l n c th l tin t hoXc hu t6 c nghY) l c th /&,t tr Oc t'n b&,n F++aH hoXc D)u Fa++H / mXc 8= trong h)& b&u thVc rt !n g&2n n c c=ng [ nghY) nh ng trong cc th)o tc 0hc 0h& m 0,t 1u2 c() /&Qc tgng h)$ g&2m Ic DS 8Tng trong mt b&u thVc th ch*ng c th c mt 0hc b&Qt 1u)n trng /. [ nghY)+ Crong tr -ng hIp ton tS Ic DS 8Tng nh l mt t&.n t F++aH g& trN Ic tgng tr Oc 0h& b&u thVc Ic tBnh / g& trN ; tgng Ic DS 8Tng trong b&u thVc\ trong tr -ng hIp ng Ic lK& Fa++H g& trN trong b&,n ) Ic tgng D)u 0h& ; tBnh ton" 4;$ ch* [ DP 0hc b&Qt + 3& 45 1
0$); 1$!!0; // A is 4,

3& 45 6
0$); 1$0!!; is 4 // A is !, is 4

C%c t %n t( 7uan h8 ) $$% !$% >% <% >$% <$ * 9 c th Do Dnh h)& b&u thVc /O& nh)u ch*ng t) c th DS 8Tng cc ton tS 1u)n hQ" Ch5o chuLn oWpqhC:: th g& trN c() th)o tc 1u)n hQ chb c th l g& trN log&c h ch*ng chb c th c g& trN true hoXc 2alse6 tur th5o b&u thVc 0,t 1u2 l *ng h)$ D)&"

p)u %$ l cc ton tS 1u)n hQ bKn c th DS 8Tng trong C:: sng !+ ]hc > ^On h!n < Wht h!n > + ^On h!n hoXc bng < + Wht h!n hoXc bng
++

#B 8T+ D tr2 g& trN 2alse D tr2 g& trN true tt nh&'n th)$ / DS 8Tng cc D6 ch*ng t) c th DS 8Tng bt cV b&u thVc no" Cho a$56 /$) / c$4 (a*/ >$ c) D tr2 g& trN true" (/!6 < a*c) D tr2 g& trN 2alse
(3 $$ .) (4 >$ 4)

Cn ch* [ rng m Fmt 8u bngH lu hon ton 0hc /O& mm Fh)& 8u bngH" Uu u t&'n l mt ton tS gn F gn g& trN c() b&u thVc b'n ph2& cho b&,n J b'n tr&H / 8u cAn lK& FmmH l mt ton tS 1u)n hQ nhm Do Dnh >5m h)& b&u thVc c bng nh)u h)$ 0hng"

Crong nh&.u trnh 8Nch c tr Oc chuLn oWpqhC:: cang nh trong ngn ng C6 cc ton tS 1u)n hQ 0hng tr2 /. g& trN log&c tru! hoXc fa9s! m tr2 /. g& trN int /O& : t !ng Vng /O& fa9s! cAn g& trN 0hc _ Fth -ng l lH th t !ng Vng /O& tru!"

C%c t %n t( 9 gic ) !% **% ,, *" Con tS ; t !ng !ng /O& ton tS log&c WvC6 n chb c mt & D J phB) b'n ph2& / /&Qc 8u$ nht m n lm l E& ng Ic g& trN c() & D t@ tru! D)ng fa9s! hoXc ng Ic lK&" #B 8T+ tr2 /. 2alse / b&u thVc b'n ph2& (, ++ ,) c g& trNtrue" !(4 <$ 6) tr2 /. true / (0 <+ 1)c g& trN 2alse" !true tr2 /. 2alse" !2alse tr2 /. true"
!(. $$ .)

Con tS log&c ** / ,, Ic DS 8Tng 0h& tBnh ton h)& b&u thVc l$ r) mt 0,t 1u2 8u$ nht" Ch*ng t !ng Vng /O& cc ton tS log&c AND / OR" ],t 1u2 c() ch*ng phT thuc /o m& 1u)n hQ c() h)& & D+ 9& D thV nht 9& D thV h)& 23t 4u5 23t 4u5 a ** / a ,, / a + tru5 tru5 u)lD5 u)lD5 #B 8T+
( (. $$ .) ** () > 4) ) tr2 /. 2alse ( tr"e 66 false )" ( (. $$ .) ,, () > 4)) tr2 /. true ( tr"e 77 false )"

tru5 u)lD5 tru5 u)lD5

tru! fa9s! fa9s! fa9s!

tru! tru! tru! fa9s!

T %n t( <i=u >i8n ) 7 *" Con tS &.u 0&Qn tBnh ton mt b&u thVc / tr2 /. mt g& trN 0hc tur thuc /o b&u thVc l *ng h)$ D)&" Cu tr*c c() n nh D)u+
condition ? res"lt# : res"lt$

W,u condition l true th g& trN tr2 /. D l res"lt#6 n,u 0hng g& trN tr2 /. l res"lt$" tr2 /. ' / ? 0hng bng @" 3$$.!5 7 6 8 ) tr2 /. A / ? bng @+6" .>) 7 a 8 / tr2 /. a6 / @ lOn h!n '" a>/ 7 a 8 / tr2 /. g& trN lOn h!n6 a hoXc /"
3$$. 7 6 8 )

C%c t %n t( tha t%c +it ) *% ,% +% 9% <<% >> *" Cc ton tS th)o tc b&t th)$ E& cc b&t b&u 8&`n mt b&,n6 c nghY) l th)$ E& b&u 8&`n nhN ph%n c() ch*ng ton tS )Dm f t2 w x z BCD ^og&c)l oWU EF ^og&c)l vy GEF ^og&c)l 5>cluD&/5 vy

{ || }}

CET 92o ng Ic b&t HIJ UNch b&t D)ng tr& HIF UNch b&t D)ng ph2&

C%c t %n t( chuyKn <Li >iKu Cc ton tS chu$n E& 0&u cho ph?p bKn chu$n E& 8 l&Qu t@ 0&u n$ D)ng 0&u 0hc" C /& cch lm /&Qc n$ trong C::6 cch c! b2n nht Ic th@) 0, t@ ngn ng C l Xt tr Oc b&u thVc cn chu$n E& t'n 0&u 8 l&Qu Ic bc trong cXp ngoXc !n )*6 /B 8T+
int i; 8loat 8 + 9./1; i + (int) 8;

9oKn m; tr'n chu$n D thp ph%n n"l~ D)ng mt D ngu$'n FnH" R %$6 ton tS chu$n E& 0&u l F&ntH" ft cch 0hc lm &.u n$ trong C:: l DS 8Tng cc conDtructorD FJ mt D Dch thut ng n$ Ic 8Nch l cu t( nh ng t& th$ n c /j 0hng >u& t)& lmH th)$ / 8=ng cc ton tS + Xt tr Oc b&u thVc cn chu$n E& 0&u t'n 0&u mO& / b)o bc +iKu th.c g&) mt cXp ngoXc !n"
i + int ( 8 );

C2 h)& cch chu$n E& 0&u .u hIp lQ trong C::" Ch'm /o oWpqhC:: cAn c nhng ton tS chu$n E& 0&u mO& Xc tr ng cho lp trnh h Ong & t Ing"

siM! f)* Con tS n$ c mt th)m D6 c th l mt 0&u 8 l&Qu h)$ l mt b&,n / tr2 /. 0Bch c bng b$t5 c() 0&u h)$ & t Ing "
a + si:eo8 (char);

a D m)ng g& trN l / 0&u char lun c 0Bch c l b$t5 tr'n m& hQ thng" & trN tr2 /. c() siM! f l mt hng D / /$ n lun lun Ic tBnh tr Oc 0h& ch !ng trnh thPc h&Qn"

C%c t %n t( >h%c

Crong C:: cAn c mt D cc ton tS 0hc6 nh cc ton tS l&'n 1u)n ,n con trt h)$ lp trnh h Ong & t Ing" Ch*ng D Ic n& ,n cT th trong cc phn t !ng Vng"

Th. tN u tiOn ca c%c t %n t(


]h& /&,t cc b&u thVc phVc tKp /O& nh&.u ton hKng cc bKn c th tP ht& ton hKng no Ic tBnh tr Oc6 ton hKng no Ic tBnh D)u" #B 8T nh trong b&u thVc D)u+
a + , ) ; < .

c th c h)& cch h&u D)u+


a + , ) (; < .) a + (, ) ;) < .

/O& 0,t 1u2 l P6 hoXc /O& 0,t 1u2 l :

C%u tr2 l-& *ng l b&u thVc u t&'n" # ngu$'n nh%n n& tr'n6 ngn ng C:: ; th&,t lp mt thV tP u t&'n g&) cc ton tS6 0hng chb r&'ng cc ton tS D hc m tt c2 cc ton tS c th >ut h&Qn trong C::" ChV tP u t&'n c() ch*ng Ic l&Qt 0' trong b2ng D)u th5o thV tP t@ c)o >ung thp"

Th. tN T %n t( l k
== () > ? @> . si:eo8 )) @@ A

MQ t2 Dcop5 tgngGg&2m 92o ng Ic b&t WvC Con tS con trt Chu$n E& 0&u U !ng hoXc %m Con tS D hc Con tS D hc UNch b&t Con tS 1u)n hQ Con tS 1u)n hQ Con tS log&c

Bss ciati1ity Cr& Cr&

! 6 $ (type) ) @

h2&

~ e l_ ll

$ / < ) @ << >> < <+ > >+ ++ !+ 6 B 7 66 77 C=

Cr& Cr& Cr& Cr& Cr& Cr&

Con tS th)o tc b&t Cr& Con tS &.u 0&Qn h2&

lk ln

+ )+ @+ $+ /+ <+ >>+ <<+ 6+ B+ 7+ D

Con tS gn Uu phL$

h2& Cr&

Associativity Nnh nghY) trong tr -ng hIp c mt /& ton tS c c=ng thV tP u t&'n th c& no D Ic tBnh tr Oc6 ton tS J phB) >) nht b'n ph2& h)$ l >) nht b'n tr&" W,u bKn mun /&,t mt b&u thVc phVc tKp m lK& 0hng chc lm /. thV tP u t&'n c() cc ton tS th n'n DS 8Tng cc ngoXc !n" Cc bKn n'n thPc h&Qn &.u n$ / n D g&*p ch !ng trnh 8` c h!n"

Bi A : C%c Cu Trc Ri=u ShiKn


ft ch !ng trnh th -ng 0hng chb b)o g<m cc lQnh tun tP n& t&,p nh)u" Crong 1u trnh chK$ n c th r nhnh h)$ lXp lK& mt oKn m; no " 9 lm &.u n$ ch*ng t) DS 8Tng cc cu tr*c &.u 0h&n" C=ng /O& /&Qc g&O& th&Qu cc cu tr*c &.u 0h&n ch*ng t) cang D ph2& b&,t tO& mt 0h& n&Qm mO&+ >h,i 98nh6 l mt nhm cc lQnh Ic nggn cch bJ& 8u chm phL$ F\H nh ng Ic gp trong mt 0h& g&O& hKn bJ& mt cXp ngoXc nhn+ : / ;" 4u h,t cc cu tr*c &.u 0h&n m ch*ng t) D >5m >?t trong ch !ng n$ cho ph?p DS 8Tng mt lQnh !n h)$ mt 0h& lQnh lm th)m D6 tur thuc /o ch*ng t) c Xt n trong cXp ngoXc nhn h)$ 0hng"

Cu trc <i=u >i8n: if 1 else


Cu tr*c n$ Ic 8=ng 0h& mt lQnh h)$ mt 0h& lQnh chb Ic thPc h&Qn 0h& mt &.u 0&Qn no tho2 m;n" UKng c() n nh D)u+
i2 (condition) statement

trong condition l b&u thVc D Ic tBnh ton" W,u &.u 0&Qn l true6 statement Ic thPc h&Qn" W,u 0hng statement bN bt 1u) F0hng thPc h&QnH / ch !ng trnh t&,p tTc thPc h&Qn lQnh t&,p D)u cu tr*c &.u 0&Qn" #B 8T6 oKn m; D)u %$ D /&,t < is (00 chb 0h& b&,n < chV) g& trN l__+
i8 (E ++ /00) cout << "E is /00";

W,u ch*ng t) mun c h!n mt lQnh Ic thPc h&Qn trong tr -ng hIp condition l true ch*ng t) c th chb Nnh mt khi lnh bng cch DS 8Tng mt cXp ngoXc nhn { }+
i8 (E ++ /00) {

cout << "E is "; cout << E; }

Ch*ng t) cang c th chb Nnh &.u g D >2$ r) n,u &.u 0&Qn 0hng Ic tho2 m;n bng cch DSu 8Tng t@ 0ho else" W Ic DS 8Tng c=ng /O& i2 nh D)u+
i2 (condition) statement# else statement$

#B 8T+
i8 (E ++ /00) cout << "E is /00"; else cout << "E is not /00";

Cu tr*c if : else c th Ic mc n& 0&m tr) nh&.u g& trN" #B 8T D)u %$ D 0&m tr) >5m g& trN chV) trong b&,n T l 8 !ng6 %m h)$ bng 0hng"
i8 (E > 0) cout << "E else i8 (E < cout << "E else cout << "E is *ositiFe"; 0) is ne#atiFe"; is 0";

C%c cu trc 9Up


fTc Bch c() cc /Ang lXp l lXp lK& mt th)o tc /O& mt D ln nht Nnh hoXc trong 0h& mt &.u 0&Qn no cAn tho2 m;n" 3Vng 9Up while " UKng c() n nh D)u+
=hile (e%pression) statement

/ chVc ngng c() n !n g&2n chb l lXp lK& statement 0h& &.u 0&Qn e%pression cAn tho2 m;n" #B 8T6 ch*ng t) D /&,t mt ch !ng trnh ,m ng Ic DS 8Tng /o lXp while+
// c"stom co"ntdown "sing while #include <iostream.h> int main () { int n; cout << "Gnter the startin# num-er > "; >nter the startin# num/er > H ?% 3% 4% .% 6% )% 5% (% @IA>!

cin >> n; Ihile (n>0) { cout << n << "D "; @@n; } cout << "J'KG!"; return 0; }

]h& ch !ng trnh chK$ ng -& DS 8Tng Ic $'u cu nhp /o mt D ,m ng Ic" p)u 6 0h& /Ang lXp while bt u n,u D m ng -& 8=ng nhp /o tho2 m;n &.u 0&Qn &.u 0&Qn n>0 0h& lQnh D Ic thPc h&Qn mt D ln 0hng >c Nnh ch@ng no &.u 0&Qn (n>0) cAn Ic tho2 m;n" Ch*ng t) cn ph2& nhO rng /Ang lXp ph2& 0,t th*c J mt &m no 6 / /$ b'n trong /Ang lXp ch*ng t) ph2& cung cp mt ph !ng thVc no buc condition trJ thnh D)& n,u 0hng th n D lXp lK& m;& m;&" Crong /B 8T tr'n /Ang lXp ph2& c lQnh &&n; lm cho condition trJ thnh D)& D)u mt D ln lXp" 3Vng 9Up do-while UKng thVc+
do statement =hile (condition);

ChVc ngng c() n l hon ton g&ng /Ang lXp while chb tr@ c mt &.u l &.u 0&Qn &.u 0h&n /Ang lXp Ic tBnh ton sau khi statement Ic thPc h&Qn6 / /$ statement D Ic thPc h&Qn Bt nht mt ln ng)$ c2 0h& condition 0hng b)o g&- Ic tho2 m;n" #B 8T6 ch !ng trnh 8 O& %$ D /&,t r) bt 0 D no m bKn nhp /o cho ,n 0h& bKn nhp D _"
// n"m&er echoer #include <iostream.h> int main () { unsi#ned lon# n; do { cout << "Gnter num-er (0 to end)= "; cin >> n; cout << "Lou entered= " << n << "Mn"; } Ihile (n !+ 0); return 0; } >nter num/er Bou entered8 >nter num/er Bou entered8 >nter num/er Bou entered8 (0 to end)8 /.91, (5)6. (0 to end)8 /00.;; (40533 (0 to end)8 0 0

#Ang lXp do-while th -ng Ic 8=ng 0h& &.u 0&Qn 0,t th*c /Ang lXp nm trong /Ang lXp6 nh trong /B 8T tr'n6 D m ng -& 8=ng nhp /o l &.u 0&Qn

0&m tr) 0,t th*c /Ang lXp" W,u bKn 0hng nhp D _ trong /B 8T tr'n th /Ang lXp D 0hng b)o g&- chm 8Vt" 3Vng 9Up for " UKng thVc+
2or (initiali'ation; condition; increase) statement;

/ chVc ngng chBnh c() n l lXp lK& statement ch@ng no condition cAn m)ng g& trN *ng6 nh trong /Ang lXp while" Wh ng th'm /o 6 2or cung cp chZ 8nh cho lQnh 0hJ& tKo / lQnh tgng" # /$ /Ang lXp n$ Ic th&,t 0, Xc b&Qt lXp lK& mt hnh ng /O& mt D ln >c Nnh" Cch thVc hoKt ng c() n nh D)u+ l6 initiali'ation Ic thPc h&Qn" W& chung n Xt mt g& 0hB b)n u cho b&,n &.u 0h&n" ^Qnh n$ Ic thPc h&Qn ch mt l n" k6 condition Ic 0&m tr)6 n,u n l *ng /Ang lXp t&,p tTc cAn n,u 0hng /Ang lXp 0,t th*c / statement Ic bt 1u)" n6 statement Ic thPc h&Qn" W c th l mt lQnh !n hoXc l mt 0h& lQnh Ic b)o trong mt cXp ngoXc nhn" ~6 Cu& c=ng6 increase Ic thPc h&Qn tgng b&,n &.u 0h&n / /Ang lXp 1u)$ trJ lK& b Oc k" p)u %$ l mt /B 8T ,m ng Ic DS 8Tng /Ang fo!"
// co"ntdown "sing a for loop #include <iostream.h> int main () { 8or (int n+/0; n>0; n@@) { cout << n << "D "; } cout << "J'KG!"; return 0; } (0% C% ?% 3% 4% .% 6% )% 5% (% @IA>!

hn 0hJ& tKo / lQnh tgng 0hng bt buc ph2& c" Ch*ng c th Ic bt 1u) nh ng /n ph2& c 8u chm phL$ nggn cch g&) cc phn" # /$6 ch*ng t) c th /&,t 2or (;n<(0;) hoXc 2or (;n<(0;n!!)" sng cch DS 8Tng 8u phL$6 ch*ng t) c th 8=ng nh&.u lQnh trong bt 0 tr -ng no trong /Ang fo!6 nh l trong phn 0hJ& tKo" #B 8T ch*ng t) c th 0hJ& tKo mt l*c nh&.u b&,n trong /Ang lXp+
uor F nm_6 &ml__ \ nm& \ n::6 &hh H

"" c#i $% & '(y c)n$ '*+c,,,

#Ang lXp n$ D thPc h&Qn e_ ln n,u nh n / & 0hng bN th)$ E& trong th%n /Ang lXp+

C%c 98nh rW nh%nh 1 98nh nh2y


J8nh break" pS 8Tng -!eak ch*ng t) c th thot 0ht& /Ang lXp ng)$ c2 0h& &.u 0&Qn n 0,t th*c ch ) Ic tho2 m;n" ^Qnh n$ c th Ic 8=ng 0,t th*c mt /Ang lXp 0hng >c Nnh h)$ buc n ph2& 0,t th*c g&) ch@ng th)$ / 0,t th*c mt cch bnh th -ng" #B 8T6 ch*ng t) D 8@ng /&Qc ,m ng Ic tr Oc 0h& n 0,t th*c+
// &rea( loop e%ample #include <iostream.h> int main () { int n; 8or (n+/0; n>0; n@@) { cout << n << "D "; i8 (n++9) { cout << "countdoIn a-orted!"; -rea%; } } return 0; } (0% C% ?% 3% 4% .% 6% countdo=n a/orted!

J8nh continue" ^Qnh continue lm cho ch !ng trnh bt 1u) phn cAn lK& c() /Ang lXp / nh2$ D)ng ln lXp t&,p th5o" #B 8T ch*ng t) D bt 1u) D e trong phn ,m ng Ic+
// &rea( loop e%ample #include <iostream.h> int main () { 8or (int n+/0; n>0; n@@) { i8 (n++,) continue; cout << n << "D "; } (0% C% ?% 3% 4% 6% )% 5% (% @IA>!

cout << "J'KG!"; return 0;

J8nh goto" ^Qnh n$ cho ph?p nh2$ / &.u 0&Qn tO& bt 0 &m no trong ch !ng trnh" W& chung bKn n'n trnh 8=ng n trong ch !ng trnh C::" Cu$ nh&'n ch*ng t) /n c mt /B 8T 8=ng lQnh g t ,m ng Ic+
// goto loop e%ample #include <iostream.h> int main () { int n+/0; loo*= ; cout << n << "D "; n@@; i8 (n>0) #oto loo*; cout << "J'KG!"; return 0; } (0% C% ?% 3% 4% .% 6% )% 5% (% @IA>!

Im exit. fTc Bch c() 5>&t l 0,t th*c ch !ng trnh / tr2 /. mt m; >c Nnh" UKng thVc c() n nh D)u
-oid e<it (int e%it code);

Ic 8=ng bJ& mt D hQ &.u hnh hoXc c th Ic 8=ng bJ& cc ch !ng trnh g&" Ch5o 1u$ Oc6 m; tr2 /. _ c nghY) l ch !ng trnh 0,t th*c bnh th -ng cAn cc g& trN 0hc _ c nghY) l c lZ&"
e%it code

Cu trc 9Na ch-n: switch"


C* php c() lQnh switch h!& Xc b&Qt mt ch*t" fTc Bch c() n l 0&m tr) mt /& g& trN hng cho mt b&u thVc6 t !ng tP /O& nhng g ch*ng t) lm J u b& n$ 0h& l&'n 0,t mt /& lQnh if / else if /O& nh)u" UKng thVc c() n nh D)u+
s=itch (e%pression) : case constant#8 &loc( of instr"ctions # /reaD; case constant$8 &loc( of instr"ctions $ /reaD; . .

. de2ault8 defa"lt &loc( of instr"ctions ;

W hoKt ng th5o cch D)u+ sXitch tBnh b&u thVc / 0&m tr) >5m n c bng constant# h)$ 0hng6 n,u *ng th n thPc h&Qn &loc( of instr"ctions # cho ,n 0h& tm th$ t@ 0ho +r!a>6 D)u nh2$ ,n phn cu& c() cu tr*c lP) chn switch" CAn n,u 0hng6 D&tch D 0&m tr) >5m b&u thVc c bng constant$ h)$ 0hng" W,u *ng n D thPc h&Qn &loc( of instr"ctions $ cho ,n 0h& tm th$ t@ 0ho +r!a>" Cu& c=ng6 n,u g& trN b&u thVc 0hng bng bt 0 hng no Ic chb Nnh J tr'n FbKn c th chb Nnh b)o nh&'u c%u lQnh cas! tur thBchH6 ch !ng trnh D thPc h&Qn cc lQnh trong phn 4!fau9t: n,u n t<n tK& / phn n$ 0hng bt buc ph2& c" 4)& oKn m; D)u l t !ng !ng+

v d switch
sIitch (E) { case /= cout << "E is /"; -rea%; case .= cout << "E is ."; -rea%; de8ault= cout << "Falue o8 E un%noIn"; }

if-else tng <ng


i8 (E ++ /) { cout << "E is /"; } else i8 (E ++ .) { cout << "E is ."; } else { cout << "Falue o8 E un%noIn"; }

C& ; n& J tr'n rng cu tr*c c() lQnh switch h!& Xc b&Qt" Ch* [ DP t<n tK& c() lQnh +r!a> J cu& mZ& 0h& lQnh" 9&.u n$ l cn th&,t / n,u 0hng th D)u 0h& thPc h&Qn &loc( of instr"ctions # ch !ng trnh D 0hng nh2$ ,n cu& c() lQnh D&tch m D thPc h&Qn cc 0h& lQnh t&,p th5o cho ,n 0h& n tm th$ lQnh +r!a> u t&'n" 9&.u n$ 0h&,n cho /&Qc Xt cXp ngoXc nhn : ; trong mZ& tr -ng hIp l 0hng cn th&,t / c th Ic 8=ng 0h& bKn mun thPc h&Qn mt 0h& lQnh cho nh&.u tr -ng hIp 0hc nh)u6 /B 8T+
sIitch (E) { case /= case .= case 9= cout << "E is /D . or 9"; -rea%; de8ault= cout << "E is not /D . nor 9"; }

Ch* [ rng lQnh s=itch chb c th Ic 8=ng Do Dnh mt b&u thVc /O& cc h.n$" # /$ ch*ng t) 0hng th Xt cc b&,n Fcase (n*5)8H h)$ cc 0ho2ng Fcase ((..))8H / ch*ng 0hng ph2& l cc hng hIp lQ" Dt$l5m3svyUyhyq4C+ m58&um non5\ oUUqWhyq4C+ _cm\ svyUyhCv+ m58&um non5\ oUUqWh^C+ _cm\ oUUqWhsvCCvf+ _cm\ svyUyh^C+ m58&um non5\ oUUqWhCv+ _cm\ svyUyhsvCCvf+ &n8ot5>t npt Dol&83} W,u bKn cn 0&m tr) cc 0ho2ng h)$ nh&.u g& trN 0hng ph2& l hng D h;$ 0,t hIp cc lQnh if / !9s! if

Bi @ : Im )Y*
4m l mt 0h& lQnh Ic thPc h&Qn 0h& n Ic g& t@ mt &m 0hc c() ch !ng trnh" UKng thVc c() n nh D)u+
type name ( argument1% argument2% ...) statement

trong + type l 0&u 8 l&Qu Ic tr2 /. c() hm name l t'n g& c() hm" arguments l cc th)m D Fc nh&.u b)o nh&'u cang Ic tur th5o nhu cuH" ft th)m D b)o g<m t'n 0&u 8 l&Qu D)u l t'n c() th)m D g&ng nh 0h& 0h)& bo b&,n F/B 8T int EH / ng /)& trA b'n trong hm nh bt 0 b&,n no 0hc" Ch*ng 8=ng tru$.n th)m D cho hm 0h& n Ic g&" Cc th)m D 0hc nh)u Ic nggn cch bJ& cc d/u 0h1y" statement l th%n c() hm" W c th l mt lQnh !n h)$ mt 0h& lQnh" U O& %$ l /B 8T u t&'n /. hm+
// f"nction e%ample #include <iostream.h> int addition (int aD int -) { int r; r+a)-; return (r); } int main () { int :; : + addition (,D9); cout << "Nhe result is " << :; return 0; } Ehe result is ?

9 c th h&u Ic oKn m; n$6 tr Oc h,t h;$ nhO lK& nhng &.u ; n& J b& u t&'n+ mt ch !ng trnh C:: lun bt u thPc h&Qn t@ hm main" # /$ ch*ng t) bt u t@ %$" Ch*ng t) c th th$ hm main bt u bng /&Qc 0h)& bo b&,n 0&u int" Wg)$ D)u l mt l-& g& tO& hm addition" W,u [ ch*ng t) D th$ DP t !ng tP g&) cu tr*c c() l-& g& hm /O& 0h)& bo c() hm+

Cc th)m D c /)& trA tht r rng" s'n trong hm main ch*ng t) g& hm addition / tru$.n h)& g& trN+ . / ) t !ng Vng /O& h)& th)m D int a / int / Ic 0h)& bo cho hm addition" #o th-& &m hm Ic g& t@ main6 1u$.n &.u 0h&n Ic chu$n D)ng cho hm addition" & trN c() c h)& th)m D F. / )H Ic cop$ D)ng h)& b&,n cTc b int a / int / b'n trong hm" UAng lQnh D)u+
return (r);

0,t th*c hm addition6 / tr2 lK& 1u$.n &.u 0h&n cho hm no ; g& n FmainH / t&,p tTc ch !ng trnh J c& &m m n bN ngt bJ& l-& g& ,n addition" Wh ng th'm /o 6 g& trN Ic 8=ng /O& lQnh return FrH chBnh l g& trN Ic tr2 /. c() hm"

& trN tr2 /. bJ& mt hm chBnh l g& trN c() hm 0h& n Ic tBnh ton" # /$ b&,n F D c c g& trN Ic tr2 /. bJ& addition (.% ))6 l ?"

Zh[m 1i h [t <ng ca c%c +i\n ]nh^c 9[i_ sKn cn nhO rng phKm /& hoKt ng c() cc b&,n 0h)& bo trong mt hm h)$ bt 0 mt 0h& lQnh no 0hc chb l hm h)$ 0h& lQnh / 0hng th DS 8Tng b'n ngo& ch*ng" #B 8T6 trong ch !ng trnh /B 8T tr'n6 bKn 0hng th DS 8Tng trPc t&,p cc b&,n a6 / h)$ r trong hm main / ch*ng l cc b&,n cTc b c() hm addition" Ch'm /o bKn cang 0hng th DS 8Tng b&,n F trPc t&,p b'n trong hm addition / n lm b&,n cTc b c()

hm main" Cu$ nh&'n bKn c th 0h)& bo cc b&,n ton cTc c th DS 8Tng ch*ng J bt 0 %u6 b'n trong h)$ b'n ngo& bt 0 hm no" 9 lm /&Qc n$ bKn cn 0h)& bo ch*ng b'n ngo& m& hm h)$ cc 0h& lQnh6 c nghY) l ng)$ trong th%n ch !ng trnh" 9%$ l mt /B 8T 0hc /. hm+
// f"nction e%ample #include <iostream.h> int su-traction (int aD int -) { int r; r+a@-; return (r); } int main () { int E+,D O+9D :; : + su-traction (;D.); cout << "Nhe 8irst result is " << : << (Mn(; cout << "Nhe second result is " << su-traction (;D.) << (Mn(; cout << "Nhe third result is " << su-traction (EDO) << (Mn(; :+ 1 ) su-traction (EDO); cout << "Nhe 8ourth result is " << : << (Mn(; return 0; } Ehe Ehe Ehe Ehe 2irst result is . second result is . third result is 5 2ourth result is 4

Crong tr -ng hIp n$ ch*ng t) tKo r) hm su/traction" ChVc ngng c() hm n$ l l$ h&Qu c() h)& th)m D r<& tr2 /. 0,t 1u2" Cu$ nh&'n6 n,u ph%n tBch hm main cc bKn D th$ ch !ng trnh ; /& ln g& ,n hm su/traction" C& ; DS 8Tng /& cch g& 0hc nh)u cc bKn th$ cc cch 0hc nh)u m mt hm c th Ic g&" 9 c h&u cXn 0 /B 8T n$ bKn cn nhO rng mt l-& g& ,n mt hm c th hon ton Ic th)$ th, bJ& g& trN c() n" #B 8T trong lQnh g& hm u t&'n +
F $ su/traction (3%5); cout << "Ehe 2irst result is " << F;

W,u ch*ng t) th)$ l-& g& hm bng g& trN c() n F l .H6 ch*ng t) D c+

F $ .; cout << "Ehe 2irst result is " << F;

C !ng tP nh /$
cout << "Ehe second result is " << su/traction (3%5);

cang cho 0,t 1u2 g&ng nh h)& 8Ang lQnh tr'n nh ng trong tr -ng hIp n$ ch*ng t) g& hm su-traction trPc t&,p nh l mt th)m D c() cout" Ch*ng t) cang c th /&,t+
cout << "Ehe second result is " << .;

/ . l 0,t 1u2 c() su/traction (3%5)" CAn /O& lQnh


cout << "Ehe third result is " << su/traction (<%G);

9&.u mO& mj 8u$ nht J %$ l cc th)m D c() su/traction l cc b&,n th)$ / cc hng" 9&.u n$ l hon ton hIp lQ" Crong tr -ng hIp n$ g& trN Ic tru$.n cho hm su/traction l $i# t!2 c() < )n8 G" Cr -ng hIp thV t cang hon ton t !ng tP" Ch)$ / /&,t
F $ 6 ! su/traction (<%G);

ch*ng t) c th /&,t+
F $ su/traction (<%G) ! 6;

cang hon ton cho 0,t 1u2 t !ng !ng" Ch* [ rng 8u chm phL$ Ic Xt J cu& b&u thVc chV 0hng cn th&,t ph2& Xt ng)$ D)u l-& g& hm"

C%c hm >hQng >iKu" C%ch s( 45ng void"


W,u bKn cAn nhO c* php c() mt l-& 0h)& bo hm+
type name ( argument1% argument2 ...) statement

bKn D th$ r rng rng n bt u /O& mt t'n 0&u6 l 0&u 8 l&Qu D Ic hm tr2 /. bJ& lQnh return" Wh ng n,u ch*ng t) 0hng mun tr2 /. g& trN no th D)o 4;$ t Jng t Ing rng ch*ng t) mun tKo r) mt hm chb h&n thN mt thng bo l'n mn hnh" W 0hng cn tr2 /. mt g& trN no c26 h!n n) cang 0hng cn nhn th)m D no h,t" # /$ ng -& t) ; nghY r) 0&u 8 l&Qu -oid trong ngn ng C" 4;$ >5m >?t ch !ng trnh D)u+

// )oid f"nction e%ample #include <iostream.h> Foid dummO8unction (Foid) { cout << "'(m a 8unction!"; } int main () { dummO8unction (); return 0; }

I'm a 2unction!

C@ 0ho -oid trong phn 8)nh Dch th)m D c nghY) l hm n$ 0hng nhn mt th)m D no" Cu$ nh&'n trong C:: 0hng cn th&,t ph2& DS 8Tng -oid lm &.u n$" sKn chb !n g&2n DS 8Tng cXp ngoXc !n F H l >ong" sJ& / hm c() ch*ng t) 0hng c mt th)m D no6 / /$ l-& g& hm dummG2unction D l +
dummG2unction ();

Dt$l5m3svyUyhyq4C+ m58&um non5\ oUUqWhyq4C+ _&n\ svyUyhCv+ m58&um non5\ oUUqWh^C+ _&n\ oUUqWhsvCCvf+ _&n\ svyUyh^C+ m58&um non5\ oUUqWhCv+ _&n\ svyUyhsvCCvf+ &n8ot5>t npt Dol&83} 4)& 8u ngoXc !n l cn th&,t cho trnh 8Nch h&u l mt l-& g& hm chV 0hng ph2& l mt t'n b&,n h)$ bt 0 8u h&Qu no 0hc"

Bi P : Im )YY*

Truy=n tham s, th! tham s gi tr hay tham s bin.


Cho ,n n)$6 trong tt c2 cc hm ch*ng t) ; b&,t6 tt c2 cc th)m D tru$.n cho hm .u Ic tru$.n th5o $i# t!2" 9&.u n$ c nghY) l 0h& ch*ng t) g& hm /O& cc th)m D6 nhng g ch*ng t) tru$.n cho hm l cc $i# t!2 chV 0hng ph2& b2n th%n cc b&,n" #B 8T6 g&2 DS ch*ng t) g& hm addition nh D)u+
int E+,D O+9D :; : + addition ( E D O );

Crong tr -ng hIp n$ 0h& ch*ng t) g& hm addition th cc g& trN . )n8 ) Ic tru$.n cho hm6 0hng ph2& l b2n th%n cc b&,n"

9,n %$ cc bKn c th ht& t&+ Wh /$ th D)o6 c 2nh h Jng g %u 9&.u ng n& J %$ l 0h& cc bKn th)$ E& g& trN c() cc b&,n a h)$ / b'n trong hm th cc b&,n < / G /n 0hng th)$ E& / ch*ng %u c Ic tru$.n cho hm chb c $i# t!2 c() ch*ng Ic tru$.n m th&" 4;$ >?t tr -ng hIp bKn cn th)o tc /O& mt b&,n ngo& J b'n trong mt hm" # /$ bKn D ph2& tru$.n th)m D 8 O& 8Kng th)m D b&,n nh J trong hm du"licate trong /B 8T 8 O& %$+
// passing parameters &y reference #include <iostream.h> Foid du*licate (int6 aD int6 -D int6 c) { a$+.; -$+.; c$+.; } int main () { int E+/D O+9D :+;; du*licate (ED OD :); cout << "E+" << E << "D O+" << O << "D :+" << :; return 0; } <$5% G$4% F$(6

9&.u u t&'n lm bKn ch* [ l trong 0h)& bo c() du"licate th5o D)u t'n 0&u c() mZ& th)m D .u l 8u / F*H6 bo h&Qu rng cc th)m D n$ Ic tru$.n th5o th)m D b&,n chV 0hng ph2& th)m D g& trN" ]h& tru$.n th)m D 8 O& 8Kng th)m D b&,n ch*ng t) )ng tru$.n b2n th%n b&,n / bt 0 DP th)$ E& no m ch*ng t) thPc h&Qn /O& th)m D b'n trong hm D 2nh h Jng trPc t&,p ,n b&,n "

Crong /B 8T tr'n6 ch*ng t) ; l&'n 0,t a6 / / c /O& cc th)m D 0h& g& hm F<6 G / FH / m& DP th)$ E& /O& a b'n trong hm D 2nh h Jng ,n g& trN c() < / hon ton t !ng tP /O& / / G6 c / F"

]&u 0h)& bo th)m D th5o 8Kng th)m D b&,n DS 8Tng d/u v3 F*H chb c trong C::" Crong ngn ng C ch*ng t) ph2& DS 8Tng con trt lm /&Qc t !ng tP nh th," Cru$.n th)m D 8 O& 8Kng th)m D b&,n cho ph?p mt hm tr2 /. nh&.u h!n mt g& trN" #B 8T6 %$ l mt hm tr2 /. D l&.n tr Oc / l&.n D)u c() th)m D u t&'n"
// more than one ret"rning )al"e #include <iostream.h> Foid *reFneEt (int ED int6 *reFD int6 neEt) { *reF + E@/; neEt + E)/; } int main () { int E+/00D OD :; *reFneEt (ED OD :); cout << "PreFious+" << O << "D QeEt+" << :; return 0; } Hre-ious$CC% Ie<t$(0(

`i% tra mUc <anh ca tham s,"


]h& Nnh nghY) mt hm ch*ng t) c th chb Nnh nhng g& trN mXc Nnh D Ic tru$.n cho cc & D trong tr -ng hIp ch*ng bN bt 1u) 0h& hm Ic g&" 9 lm /&Qc n$ !n g&2n chb cn gn mt g& trN cho & D 0h& 0h)& bo hm" W,u g& trN c() th)m D /n Ic chb Nnh 0h& g& hm th g& trN mXc Nnh D bN bt 1u)" #B 8T+
// defa"lt )al"es in f"nctions #include <iostream.h> int diFide (int aD int -+.) { int r; r+a/-; return (r); } int main () { cout << diFide (/.); cout << endl; cout << diFide (.0D1); return 0; } 4 .

Wh ng ch*ng t) th$ trong th%n ch !ng trnh6 c h)& l-& g& hm di-ide" Crong lQnh u t&'n+
di-ide ((5)

ch*ng t) chb 8=ng mt th)m D nh ng hm di-ide cho ph?p ,n h)&" sJ& /$ hm di-ide D tP cho th)m D thV h)& g& trN bng 5 / l g& trN mXc Nnh c() n Fch* [ phn 0h)& bo hm Ic 0,t th*c bJ& int /$5H" # /$ 0,t 1u2 D l P F(5/5H" Crong lQnh thV h)&+
di-ide (50%6)

c h)& th)m D6 bJ& /$ g& trN mXc Nnh D Ic bt 1u)" ],t 1u2 c() hm D l @ F50/6H"

bu% t2i c%c hm"


4)& hm c th c cang t'n n,u 0h)& bo th)m D c() ch*ng 0hc nh)u6 &.u n$ c nghY) l bKn c th Xt c=ng mt t'n cho nh&.u hm n,u ch*ng c D th)m D 0hc nh)u h)$ 0&u 8 l&Qu c() cc th)m D 0hc nh)u Fh)$ thm chB l 0&u 8 l&Qu tr2 /. 0hc nh)uH" #B 8T+
// o)erloaded f"nction #include <iostream.h> int diFide (int aD int -) { return (a/-); } 8loat diFide (8loat aD 8loat -) { return (a/-); } int main () { int E+,DO+.; 8loat n+,.0Dm+..0; cout << diFide (EDO); cout << "Mn"; cout << diFide (nDm); return 0; } 5 5..

Crong /B 8T n$ ch*ng t) Nnh nghY) h)& hm c c=ng t'n nh ng mt hm 8=ng h)& th)m D 0&u int / hm cAn lK& 8=ng 0&u 2loat" Crnh b&'n 8Nch D b&,t cn ph2& g& hm no bng cch ph%n tBch 0&u th)m D 0h& hm Ic g&"

9 !n g&2n t& /&,t c2 h)& hm .u c m; lQnh nh nh)u nh ng &.u n$ 0hng bt buc" sKn c th >%$ 8Png h)& hm c c=ng t'n nh ng hoKt ng hon ton 0hc nh)u"

C%c hm inline"
Chb thN inline c th Ic Xt tr Oc 0h)o bo c() mt hm chb r rng l-& g& hm D Ic th)$ th, bng m; lQnh c() hm 0h& ch !ng trnh Ic 8Nch" #&Qc n$ t !ng !ng /O& /&Qc 0h)& bo mt m)cro6 lI& Bch c() n chb th h&Qn /O& cc hm rt ngn6 tc chK$ ch !ng trnh D Ic c2& th&Qn / n 0hng ph2& g& mt th( tTc con" Cu tr*c c() n nh D)u+
inline type name ( arguments ... ) : instructions ... ;

l-& g& hm cang nh bt 0 mt hm no 0hc" ]hng cn th&,t ph2& Xt t@ 0ho inline trong lQnh g&6 chb cn trong l-& 0h)& bo hm l ("

R8 7ui"
Cc hm c th g& chBnh n" 9&.u n$ c th c Bch /O& mt D tc /T nh l mt D ph !ng php Dp >,p h)$ tBnh g&)& th@) c() mt D" #B 8T6 tBnh g&)& th@) c() mt D FnH6 cng thVc ton hc c() n nh D)u+
n! + n $ (n@/) $ (n@.) $ (n@9) ... $ /

/ mt hm Q 1u& tBnh ton D nh D)u+


// factorial calc"lator #include <iostream.h> lon# 8actorial (lon# a) { i8 (a > /) return (a $ 8actorial (a@/)); else return (/); } int main () { lon# l; cout << "NO*e a num-er= "; cin >> l; cout << "!" << l << " + " << 8actorial (l); return 0; } EG"e a num/er8 R !C $ )45??0

Ch* [ trong hm 2actorial ch*ng t) c th lQnh g& chBnh n nh ng chb 0h& th)m D lOn h!n (6 n,u 0hng th hm D thPc h&Qn mt /Ang lXp / hKn / D)u 0h& ,n _ n D t&,p tTc nh%n c2 nhng D %m" 4m n$ c mt hKn ch, l 0&u 8 l&Qu m n 8=ng Flon#H 0hng cho ph?p tBnh g&)& th@) 1u (5!"

Shai +% mcu ch hm"


Cho ,n g&- ch*ng t) hon ton ph2& Nnh nghY) hm tr Oc lQnh g& u t&'n ,n n6 m th -ng l trong main6 / /$ hm main lun ph2& nm cu& ch !ng trnh" W,u bKn thS lXp lK& mt /& /B 8T /. hm tr Oc %$ nh ng thS Xt hm main tr Oc bt 0 mt hm Ic g& t@ n6 bKn gn nh chc chn D nhn Ic thng bo lZ&" Wgu$'n nh%n l mt hm ph2& Ic 0h)& bo tr Oc 0h& n Ic g& nh nh ngg> g ch*ng t) ; lm trng tt c2 cc /B 8T" Wh ng c mt cch 0hc trnh ph2& /&,t tt c2 m; ch !ng trnh tr Oc 0h& ch*ng c th Ic 8=ng trong main h)$ bt 0 mt hm no 0hc" 9 chBnh l khai -#o m4u cho h3m" Cch n$ b)o g<m /&Qc 0h)& bo hm mt cch ngn gn nh ng ( cho trnh 8Nch c th b&,t cc th)m D / 0&u 8 l&Qu tr2 /. c() hm" UKng c() n nh D)u+
type name ( argument_type1% argument_type2% ...);

9%$ chBnh l phn u c() Nnh nghY) hm6 ngoK& tr@+


W 0hng c bt 0 lQnh no cho hm" 9&.u n$ c nghY) l n 0hng b)o g<m th%n hm /O& tt c2 cc lQnh th -ng Ic bc trong cXp ngoXc nhn { }" W 0,t th*c bng 8u chm phL$ F;H" Crong phn l&Qt 0' cc th)m D chb cn /&,t 0&u c() ch*ng l (" #&Qc /&,t t'n c() cc th)m D trong phn 0h)& bo mu l 0hng bt buc"

#B 8T+
// prototyping #include <iostream.h> Foid odd (int a); Foid eFen (int a); int main () { int i; do { cout << "NO*e a num-er= (0 to eEit)"; EG"e a Ium/er EG"e a Ium/er EG"e a Ium/er EG"e a Ium/er num/er (0 is odd. num/er (0 is e-en. num/er (0 is e-en. num/er (0 is e-en. to e<it)8 R to e<it)8 0 to e<it)8 /090 to e<it)8 0

cin >> i; odd (i); } Ihile (i!+0); return 0;

Foid odd (int a) { i8 ((a<.)!+0) cout << "Qum-er is odd.Mn"; else eFen (a); } Foid eFen (int a) { i8 ((a<.)++0) cout << "Qum-er is eFen.Mn"; else odd (a); }

#B 8T n$ r rng 0hng ph2& l mt /B 8T /. DP h&Qu 1u2" C& chc chn rng cc bKn c th nhn Ic 0,t 1u2 nh tr'n chb /O& mt nS) D 8Ang lQnh" Cu$ nh&'n n g&*p cho ch*ng t) th$ Ic /&Qc 0h)& bo mu cc hm l nh th, no" 4!n n)6 trong /B 8T n$ /&Qc 0h)& bo mu Bt nht mt hm l bt buc" 9u t&'n ch*ng t) th$ 0h)& bo mu c() h)& hm odd / e-en+
Foid odd (int a); Foid eFen (int a);

cho ph?p h)& hm n$ c th Ic DS 8Tng tr Oc 0h& ch*ng Ic Nnh nghY) hon chbnh" Cu$ nh&'n l[ 8o Xc b&Qt g&2& thBch tK& D)o ch !ng trnh n$ lK& cn Bt nht mt hm ph2& Ic 0h& bo mu l trong odd c mt l-& g& ,n e-en / trong e-en c mt l-& g& ,n odd" # /$ n,u 0hng c hm no Ic 0h)& bo tr Oc th lZ& chc chn D >L$ r)" Dt$l5m3svyUyhyq4C+ m58&um non5\ oUUqWhyq4C+ _&n\ svyUyhCv+ m58&um non5\ oUUqWh^C+ _&n\ oUUqWhsvCCvf+ _&n\ svyUyh^C+ m58&um non5\ oUUqWhCv+ _&n\ svyUyhsvCCvf+ &n8ot5>t npt Dol&83} yt nh&.u lp trnh /&'n 0&nh ngh&Qm 0hu$'n rng t/t c5 cc hm n'n Ic 0h)& bo mu" 9 cang l l-& 0hu$'n c() t&6 nht l trong tr -ng hIp c nh&.u hm hoXc ch*ng rt 8&6 0h& /&Qc 0h)& bo tt c2 cc hm J c=ng mt chZ cho ph?p ch*ng t) b&,t ph2& g& cc hm nh th, no6 / /$ t&,t 0&Qm Ic th-& g&)n"

s& + f2ng
f2ng l mt 8;$ cc phn tS c c=ng 0&u Ic Xt l&'n t&,p trong b nhO / c th tru$ >ut ,n t@ng phn tS bng cch th'm mt chb D /o D)u t'n c() m2ng"

9&.u n$ c nghY) l6 /B 8T6 ch*ng t) c th l u e g& trN 0&u int m 0hng cn ph2& 0h)& bo e b&,n 0hc nh)u"#B 8T6 mt m2ng chV) e g& trN ngu$'n 0&u int c t'n l -illy c th Ic b&u 8&`n nh D)u+

trong mZ& mt trng b&u 8&`n mt phn tS c() m2ng6 trong tr -ng hIp n$ l cc g& trN ngu$'n 0&u int" Ch*ng Ic nh D t@ 0 ,n 6 / phn tS u t&'n c() m2ng lun l 0 bt 0 8& c() n l b)o nh&'u" Wh bt 0 b&,n no 0hc6 mt m2ng ph2& Ic 0h)& bo tr Oc 0h& c th DS 8Tng" ft 0h)& bo &n hnh cho mt m2ng trong C:: nh D)u+
type name >elements?;

trong type l mt 0&u 8 l&Qu hIp lQ Fint6 f9 at"""H6 name l mt t'n b&,n hIp lQ / tr -ng elements chb Nnh m2ng D chV) b)o nh&'u phn tS # /$6 0h)& bo -illy nh ; trnh b$ J tr'n ch*ng t) chb cn mt 8Ang !n g&2n nh D)u+
int -illO >,?;

Ch* [+ Cr -ng elements b'n trong cXp ngoXc >? ph2& l mt g& trN hng 0h& 0h)& bo mt m2ng6 / m2ng l mt 0h& nhO tYnh c 0Bch c >c Nnh / trnh b&'n 8Nch ph2& c 0h2 ngng >c Nnh >5m cn b)o nh&'u b nhO cp pht cho m2ng tr Oc 0h& cc lQnh c th Ic thPc h&Qn"

Shdi t[ mt m2ng"
]h& 0h)& bo mt m2ng /O& tm hoKt ng N) ph !ng Ftrong mt hmH6 th5o mXc Nnh n D 0hng Ic 0hJ& tKo6 / /$ n& 8ung c() n l 0hng >c Nnh cho ,n 0h& ch*ng r) l u cc g& trN l'n "

W,u ch*ng t) 0h)& bo mt m2ng ton cTc Fb'n ngo& tt c2 cc hmH n D Ic 0hJ& tKo / tt c2 cc phn tS Ic Xt bng _" # /$ n,u ch*ng t) 0h)& bo m2ng ton cTc+

int -illO >,?;

m& phn tS c() -illy D Ic 0hJ& tKo l 0+

Wh ng th'm /o 6 0h& ch*ng t) 0h)& bo mt m2ng6 ch*ng t) c th gn cc g& trN 0hJ& tKo cho t@ng phn tS c() n" #B 8T+

int /illG J.K $ : (4% 5% 33% 60% (503( ;;

lQnh tr'n D 0h)& bo mt m2ng nh D)u+

p phn tS trong m2ng m ch*ng t) 0hJ& tKo /O& cXp ngoXc nhn { } ph2& bng D phn tS c() m2ng ; Ic 0h)& bo /O& cXp ngoXc /ung > ?" sJ& / &.u n$ c th Ic co& l mt DP lXp lK& 0hng cn th&,t n'n C:: cho ph?p trng g&) cXp ngoXc /ung6 0Bch th Oc c() m2ng Ic >c Nnh bng D g& trN g&) cXp ngoXc nhn"

Truy Tut <\n c%c phen t( ca m2ng"


R bt 0 &m no c() ch !ng trnh trong tm hoKt ng c() m2ng6 ch*ng t) c th tru$ >ut t@ng phn tS c() m2ng c h)$ chbnh DS) nh l & /O& mt b&,n bnh th -ng" Cu tr*c c() n nh D)u+
name>inde%?

Wh J trong /B 8T tr Oc t) c m2ng -illy g<m e phn tS c 0&u int6 ch*ng t) c th tru$ >ut ,n t@ng phn tS c() m2ng nh D)u+

#B 8T6 l u g& trN e /o phn tS thV b) c() -illy t) /&,t nh D)u+


/illGJ5K $ 3.;

/6 /B 8T6 gn g& trN c() phn tS thV n c() b&ll$ cho b&,n a6 ch*ng t) /&,t+
a $ /illGJ5K;

# /$6 >?t /. m& ph !ng 8&Qn6 b&u thVc /illGJ5K g&ng nh bt 0 mt b&,n 0&u int" Ch* [ rng phn tS thV b) c() /illG l /illGJ5K6 / m2ng bt u t@ chb D _" # /$6 phn tS cu& c=ng D l /illGJ6K" # /$ n,u ch*ng t) /&,t /illGJ.K6 ch*ng t) D tru$ >ut ,n phn tS thV c() m2ng / / It 1u g&O& hKn c() m2ng" Crong C::6 /&Qc / It 1u g&O& hKn chb D c() m2ng l hon ton hIp lQ6 tu$ nh&'n n c th g%$ r) nhng /n . thPc DP 0h pht h&Qn bJ& / ch*ng 0hng tKo r) nhng lZ& trong 1u trnh 8Nch nh ng ch*ng c th tKo r) nhng 0,t 1u2 0hng mong mun trong 1u trnh thPc h&Qn" Wgu$'n nh%n c() /&Qc n$ D Ic n& ,n 0Y h!n 0h& ch*ng t) bt u DS 8Tng con trt" Cn ph2& nhn mKnh rng ch*ng t) DS 8Tng cXp ngoXc /ung cho h)& tc /T+ u t&'n l Xt 0Bch th Oc cho m2ng 0h& 0h)& bo ch*ng / thV h)&6 chb Nnh chb D cho mt phn tS cT th c() m2ng 0h& >5m >?t ,n n"
int -illO>,?; -illO>.? + ;,; m,ng. // (hai &*o m+t m,ng m-i. // tr"y %"/t 01n m+t ph2n t3 c4a

ft /& th)o tc hIp lQ 0hc /O& m2ng+


-illO>0? + a; -illO>a? + ;,; - + -illO >a).?; -illO>-illO>a?? + -illO>.? ) ,; // )5 d6 )7 m,ng #include <iostream.h> int -illO >? + {/0D .D ;;D 10D /.0;/}; int nD result+0; int main () { 8or ( n+0 ; n<, ; n)) ) { (5504

result )+ -illO>n?; } cout << result; return 0;

M2ng nhi=u chi=u"


f2ng nh&.u ch&.u c th Ic co& nh m2ng c() m2ng6 /B 8T6 mt m2ng h)& ch&.u c th Ic t Jng t Ic nh l mt b2ng h)& ch&.u g<m cc phn tS c 0&u 8 l&Qu cT th / g&ng nh)u"

b&u 8&`n mt m2ng h)& ch&.u 0Bch th Oc n>e c 0&u int" Cch 0h)& bo m2ng n$ nh D)u+
SimmO int SimmO >9?>,?;

/6 /B 8T6 cch tru$ >ut ,n phn tS thV h)& th5o ch&.u 8c / thV t th5o ch&.u ng)ng trong mt b&u thVc nh D)u+
LimmGJ(KJ)K

Fh;$ nhO rng chb D c() m2ng lun bt u t@ 0H" f2ng nh&.u ch&.u 0hng bN g&O& hKn bJ& h)& chb D Fh)& ch&.uH6 Ch*ng c th chV) b)o nh&.u chb D t=$ thBch mXc 8= Bt 0hB cn ph2& 8=ng ,n m2ng lOn h!n n ch&.u" 4;$ thS >5m >?t l Ing b nhO m mt m2ng c nh&.u chb D cn ,n" #B 8T+
char centurO >/00?>90,?>.1?>00?>00?;

gn mt g& trN char cho mZ& g&%$ trong mt th, 0b6 ph2& cn ,n h!n n t g& trN chars Ch*ng t) D ph2& cn 0ho2ng ns yof 0h)& bo n" f2ng nh&.u ch&.u thPc r) l mt 0h& n&Qm tr@u t Ing / ch*ng t) c th c 0,t 1u2 t !ng tP /O& m2ng mt ch&.u bng mt th)o tc !n g&2n g&) cc chb D c() n+

int LimmG J)KJ.K; t !ng !ng int LimmG J(.K; Fn c e m leH

/O&

U O& %$ l h)& /B 8T /O& c=ng mt 0,t 1u2 nh nh)u6 mt DS 8Tng m2ng h)& ch&.u / mt DS 8Tng m2ng mt ch&.u+
// m"ltidimensional array #include <iostream.h> #de8ine W'TNH , #de8ine HG'UHN 9 int SimmO >HG'UHN?>W'TNH?; int nDm; int main () { 8or (n+0;n<HG'UHN;n))) 8or (m+0;m<W'TNH;m))) { SimmO>n?>m?+(n)/)$(m)/); } return 0; } // pse"do8m"ltidimensional array #include <iostream.h> #de8ine W'TNH , #de8ine HG'UHN 9 int SimmO >HG'UHN $ W'TNH?; int nDm; int main () { 8or (n+0;n<HG'UHN;n))) 8or (m+0;m<W'TNH;m))) { SimmO>n $ W'TNH ) m?+(n)/)$(m)/); } return 0; }

0hng mt ch !ng trnh no /&,t g r) mn hnh nh ng c2 h)& .u gn g& trN /o 0h& nhO c t'n LimmG th5o cch D)u+

Ch*ng t) ; Nnh nghY) hng F#de2ineH !n g&2n h) nhng chbnh DS) D)u n$ c() ch !ng trnh6 /B 8T6 trong tr -ng hIp ch*ng t) 1u$,t Nnh tgng 0Bch th Oc c() m2ng /O& ch&.u c)o l ~ th)$ / l n6 ch*ng t) chb cn th)$ E& 8Ang+
#de8ine HG'UHN 9

thnh
#de8ine HG'UHN 1

/ 0hng ph2& c th'm DP th)$ E& no n) & /O& ch !ng trnh"

Dfng m2ng 9m tham s,"

#o mt l*c no c th ch*ng t) cn ph2& tru$.n mt m2ng tO& mt hm nh l mt th)m D" Crong C::6 /&Qc tru$.n th5o th)m D g& trN mt 0h& nhO l 0hng hIp lQ6 ng)$ c2 0h& n Ic tE chVc thnh mt m2ng" Cu$ nh&'n ch*ng t) lK& Ic ph?p tru$.n N) chb c() n6 /&Qc n$ cang tKo r) 0,t 1u2 thPc t, g&ng th)o tc J tr'n nh ng lK& nh)nh h!n nh&.u / h&Qu 1u2 h!n" 9 c th nhn m2ng l th)m D th &.u 8u$ nht ch*ng t) ph2& lm 0h& 0h)& bo hm l chb Nnh trong phn th)m D 0&u 8 l&Qu c! b2n c() m2ng6 t'n m2ng / cXp ngoXc /ung trng" #B 8T6 hm D)u+
Foid *rocedure (int ar#>?)

nhn /o mt th)m D c 0&u 3m2ng c() char3 / c t'n ar#" 9 tru$.n th)m D cho hm n$ mt m2ng Ic 0h)& bo+
int mOarraO >10?;

chb cn g& hm nh D)u+


*rocedure (mOarraO);

U O& %$ l mt /B 8T cT th
// arrays as parameters #include <iostream.h> Foid *rintarraO (int ar#>?D int len#th) { 8or (int n+0; n<len#th; n))) cout << ar#>n? << " "; cout << "Mn"; } int main () { int 8irstarraO>? + {,D /0D /,}; int secondarraO>? + {.D 1D 0D HD /0}; *rintarraO (8irstarraOD9); *rintarraO (secondarraOD,); return 0; } . (0 (. 5 6 4 ? (0

Wh bKn c th th$6 th)m D u t&'n Fint ar#JKH chp nhn m& m2ng c 0&u c! b2n l int6 bt 0 8& c() n l b)o nh&'u6 / /$ cn th&,t ph2& c th)m D thV h)& bo cho hm n$ b&,t 8& c() m2ng m ch*ng t) tru$.n cho n" Crong phn 0h)& bo hm ch*ng t) cang c th 8=ng th)m D l cc m2ng nh&.u ch&.u" Cu tr*c c() m2ng n ch&.u nh D)u+

&ase9typeJKJdepthKJdepthK

/B 8T6 mt hm /O& th)m D l m2ng nh&.u ch&.u c th nh D)u+


Foid *rocedure (int mOarraO>?>9?>1?)

ch* [ rng cXp ngoXc /ung u t&'n trng nh ng cc cXp ngoXc D)u th 0hng" sKn lun lun ph2& lm /$ / trnh b&'n 8Nch C:: ph2& c 0h2 ngng >c Nnh lOn c() cc ch&.u th'm /o c() m2ng" Dt$l5m3svyUyhyq4C+ m58&um non5\ oUUqWhyq4C+ _&n\ svyUyhCv+ m58&um non5\ oUUqWh^C+ _&n\ oUUqWhsvCCvf+ _&n\ svyUyh^C+ m58&um non5\ oUUqWhCv+ _&n\ svyUyhsvCCvf+ &n8ot5>t npt Dol&83} f2ng6 c2 mt ch&.u / nh&.u ch&.u6 0h& tru$.n cho hm nh l mt th)m D th -ng l ngu$'n nh%n g%$ lZ& cho nhng lp trnh /&'n th&,u 0&nh ngh&Qm" Cc bKn n'n c b& '"'" C n trg c th h&u r h!n m2ng hoKt ng nh th, no"

s& + %u ][ CP
Crong tt c2 cc ch !ng trnh ch*ng t) ; th$ cho ,n g&-6 ch*ng t) chb DS 8Tng cc b&,n 0&u D6 chb 8=ng b&u 8&`n cc D" Wh ng b'n cKnh cc b&,n 0&u D cAn c cc >%u 0B tP6 ch*ng cho ph?p ch*ng t) b&u 8&`n cc chuZ& 0B tP nh l cc t@6 c%u6 oKn /gn b2n""" Cho ,n g&- ch*ng t) mO& chb 8=ng ch*ng 8 O& 8Kng hng chV chV) 1u)n t%m ,n cc b&,n c th chV) ch*ng" Crong C:: 0hng c 0&u 8 l&Qu c6 -5n l u cc >%u 0B tP" 9 c th tht) m;n nhu cu n$6 ng -& t) DS 8Tng m2ng c 0&u char" 4;$ nhO rng 0&u 8 l&Qu n$ FcharH chb c th l u tr mt 0B tP !n6 bJ& /$ n Ic 8=ng tKo r) >%u c() cc 0B tP !n" #B 8T6 m2ng D)u Fh)$ l >%u 0B tPH+
char LennG J50K;

c th l u mt >%u 0B tP /O& 8& cPc K& l k_ 0B tP" sKn c th t Jng t Ing n nh D)u+

]Bch th Oc cPc K& n$ 0hng cn ph2& lun lun 8=ng ,n" #B 8T6 LennG c th l u >%u "Hello" haO "VerrO christmas"" # cc m2ng 0B tP c th l u cc >%u 0B tP ngn h!n 8& c() n6 trong C:: ; c mt 1u$ Oc 0,t th*c mt n& 8ung c() mt >%u 0B tP bng mt 0B tP null6 c th Ic /&,t l (M0("

Ch*ng t) c th b&u 8&`n LennG Fmt m2ng c k_ phn tS 0&u charH 0h& l u tr >%u 0B tP "Hello" / "VerrO Christmas" th5o cch D)u+

Ch* [ rng D)u n& 8ung c() >%u6 mt 0B tP null F'M0'H Ic 8=ng bo h&Qu 0,t th*c >%u" Whng mu >m b&u 8&`n nhng g& trN 0hng >c Nnh"

Shdi t[ c%c Thu >& tN"


# nhng >%u 0B tP l nhng m2ng bnh th -ng n'n ch*ng cang nh cc m2ng 0hc" #B 8T6 n,u ch*ng t) mun 0hJ& tKo mt >%u 0B tP /O& nhng g& trN >c Nnh ch*ng t) c th lm &.u t !ng tP nh /O& cc m2ng 0hc+
char mOstrin#>? + { (H(D (e(D (l(D (l(D (o(D (M0( };

Cu$ nh&'n6 ch*ng t) c th 0hJ& tKo g& trN cho mt >%u 0B tP bng cch 0hc+ DS 8Tng cc h.n$ 7(u k8 t9" Crong cc b&u thVc ch*ng t) ; DS 8Tng trong cc /B 8T trong cc ch !ng tr Oc cc hng >%u 0B tP >ut h&Qn /& ln" Ch*ng Ic b&u 8&`n trong cXp ngoXc 0?p F"H6 /B 8T+
"the result is= "

l mt hng >%u 0B tP ch*ng t) DS 8Tng J mt D chZ" ]hng g&ng nh 8u nh$ !n F(H cho ph?p b&u 8&`n hng 0B tP6 cXp ngoXc 0?p F"H l hng b&u 8&`n mt chuZ& 0B tP l&'n t&,p6 / J cu& chuZ& mt 0B tP null F(M0(H lun Ic tP ng th'm /o" # /$ ch*ng t) c th 0hJ& tKo >%u mGstrin# th5o mt trong h)& cch D)u %$+
char mOstrin# >? + { (H(D (e(D (l(D (l(D (o(D (M0( }; char mOstrin# >? + "Hello";

Crong c2 h)& tr -ng hIp m2ng Fh)$ >%u 0B tPH mGstrin# Ic 0h)& bo /O& 0Bch th Oc 0B tP+ e 0B tP b&u 8&`n Hello cng /O& mt 0B tP null" Cr Oc 0h& t&,p tTc6 t& cn ph2& nhc nhJ bKn rng /&Qc gn nh&.u hng nh /&Qc DS 8Tng 8u ngoXc 0?p F"H chb hIp lQ 0h& kh&i t:o m2ng6 tVc l l*c 0h)& bo m2ng" Cc b&u thVc trong ch !ng trnh nh +

mOstrin# + "Hello"; mOstrin#>? + "Hello";

l 0hng hIp lQ6 c2 c%u lQnh 8 O& %$ cang /$+


mOstrin# + { (H(D (e(D (l(D (l(D (o(D (M0( };

#$ h;$ nhO+ Ch*ng t) chb c th 3gn3 nh&.u hng cho mt m2ng /o l*c 0hJ& tKo n" Wgu$'n nh%n l mt th)o tc gn F+H 0hng th nhn /, tr& l c2 mt m2ng m chb c th nhn mt trong nhng phn tS c() n" #o th-& &m 0hJ& tKo m2ng l mt tr -ng hIp Xc b&Qt6 / n 0hng thPc DP l mt lQnh gn mXc 8= n DS 8Tng 8u bng F$H"

`%n gi% tra ch Thu >& tN


# /, tr& c() mt lQnh gn chb c th l mt phn tS c() m2ng chV 0hng th l c2 m2ng6 ch*ng t) c th gn mt >%u 0B tP cho mt m2ng 0&u char DS 8Tng mt ph !ng php nh D)u+
mGstrin#J0K mGstrin#J(K mGstrin#J5K mGstrin#J)K mGstrin#J6K mGstrin#J.K $ $ $ $ $ $ 'H'; 'e'; 'l'; 'l'; 'o'; 'M0';

Wh ng r rng %$ 0hng ph2& l mt ph !ng php thPc t," 9 gn g& trN cho mt >%u 0B tP6 ch*ng t) c th DS 8Tng loKt hm 0&u strc"G Fstr&ng copyH6 hm n$ Ic Nnh nghY) trong strin#.h / c th Ic g& nh D)u+
strc"G (string#% string$);

^Qnh n$ cop$ n& 8ung c() string$ D)ng string#" string$ c th l mt m2ng6 con trt h)$ mt hng >%u 0B tP6 bJ& /$ lQnh D)u %$ l mt cch *ng gn >%u hng "Hello" cho mGstrin#+
strc*O (mOstrin#D "Hello");

#B 8T+
// setting )al"e to string #include <iostream.h> #include <strin#.h> int main () { char s:VOQame >.0?; strc*O (s:VOQameD"W. Xoulie"); cout << s:VOQame; return 0; N. Ooulie

9 [ rng ch*ng t) ph2& &nclu85 u&l5 <strin#.h> c th DS 8Tng hm strc"G" fXc 8= ch*ng t) lun c th /&,t mt hm !n g&2n nh hm setstrin# 8 O& %$ thPc h&Qn mt th)o tc g&ng nh strc"G+
// setting )al"e to string #include <iostream.h> Foid setstrin# (char s:Yut >?D char s:'n >?) { int n+0; do { s:Yut>n? + s:'n>n?; n)); } Ihile (s:'n>n? !+ 0); } int main () { char s:VOQame >.0?; setstrin# (s:VOQameD"W. Xoulie"); cout << s:VOQame; return 0; } N. Ooulie

ft ph !ng thVc th -ng 8=ng 0hc gn g& trN cho mt m2ng l DS 8Tng trPc t&,p 8Ang nhp 8 l&Qu FcinH" Crong tr -ng hIp n$ g& trN c() >%u 0B tP Ic gn bJ& ng -& 8=ng trong 1u trnh ch !ng trnh thPc h&Qn" ]h& cin Ic DS 8Tng /O& cc >%u 0B tP n th -ng Ic 8=ng /O& ph !ng thVc #etline c() n6 ph !ng thVc n$ c th Ic g& nh D)u+
cin.#etline ( char &"fferJK% int length% char delimiter $ ' Mn');

trong buffer Fb QmH l N) chb n!& D l u tr 8 l&Qu /o Fnh l mt m2ng chng hKnH6 length l 8& cPc K& c() b Qm F0Bch th Oc c() m2ngH / delimiter l 0B tP Ic 8=ng 0,t th*c /&Qc nhp6 mXc Nnh h n,u ch*ng t) 0hng 8=ng th)m D n$ h D l 0B tP >ung 8Ang F'Mn'H" #B 8T D)u %$ lXp lK& tt c2 nhng g bKn g tr'n bn phBm" W rt !n g&2n nh ng l mt /B 8T cho th$ bKn c th DS 8Tng cin.#etline /O& cc >%u 0B tP nh th, no+
// cin with strings #include <iostream.h> What's Gour name7 Wuan Hello Nuan. Which is Gour 2a-ourite team7 'nter

int main () Vilan { I liDe Inter Pilan too. char mO-u88er >/00?; cout << "What(s Oour nameC "; cin.#etline (mO-u88erD/00); cout << "Hello " << mO-u88er << ".Mn"; cout << "Which is Oour 8aFourite teamC "; cin.#etline (mO-u88erD/00); cout << "' li%e " << mO-u88er << " too.Mn"; return 0; }

Ch* [ trong c2 h)& l-& g& cin.#etline ch*ng t) DS 8Tng c=ng mt b&,n >%u FmG/u22erH" Whng g ch !ng trnh lm trong l-& g& thV h)& !n g&2n l th)$ th, n& 8ung c() /u22er trong l-& g& ca bng n& 8ung mO&" W,u bKn cAn nhO phn n& /. g&)o t&,p /O&6 bKn D nhO rng ch*ng t) ; DS 8Tng ton tS >> nhn 8 l&Qu trPc t&,p t@ u /o chuLn" h !ng thVc n$ c th Ic 8=ng /O& cc >%u 0B tP th)$ cho cin.#etline" #B 8T6 trong ch !n trnh c() ch*ng t)6 0h& ch*ng t) mun nhn 8 l&Qu t@ ng -& 8=ng ch*ng t) c th /&,t+
cin >> mO-u88er;

lQnh n$ D lm /&Qc nh n c nhng hKn ch, D)u m cin.#etline 0hng c+

W chb c th nhn nhng t@ !n F0hng nhn Ic c2 c%uH / ph !ng thVc n$ DS 8Tng 0B tP trngFb)o g<m c2 8u cch6 8u t)b / 8u >ung 8AngH lm 8u h&Qu 0,t th*c"" W 0hng cho ph?p chb Nnh 0Bch th Oc cho b Qm" Ch !ng trnh c() bKn c th chK$ 0hng En Nnh n,u 8 l&Qu /o lOn h!n 0Bch c c() m2ng chV) n"

# nhng ngu$'n nh%n tr'n6 0h& mun nhp /o cc >%u 0B tP bKn n'n DS 8Tng cin.#etline th)$ / cin >>"

ChuyKn <Li Thu >& tN sang c%c >iKu >h%c"


# mt >%u 0B tP c th b&u 8&`n nh&.u 0&u 8 l&Qu 0hc nh 8Kng D n'n /&Qc chu$n E& n& 8ung nh /$ D)ng 8Kng D l rt hu Bch" #B 8T6 mt >%u c th m)ng g& trN "(C33"nh ng l mt chuZ& g<m e 0B tP F0 c2 0B tP nullH / 0hng 8` g chu$n thnh mt D ngu$'n" # /$ th /&Qn cstdli/ Fstdli/.hH ; cung cp n m)croGhm hu Bch D)u+

at i: chu$n >%u thnh 0&u int" at 9: chu$n >%u thnh 0&u lon#" at f: chu$n >%u thnh 0&u 2loat"

Ct c2 cc hm n$ nhn mt th)m D / tr2 /. g& trN D Fint6 lon# hoXc 8loatH" Cc hm n$ 0h& 0,t hIp /O& ph !ng thVc #etline c() cin l mt cch ng t&n c$ h!n ph !ng thVc cin>> cE &n 0h& $'u cu ng -& DS 8Tng nhp /o mt D+
// cin and ato* f"nctions #include <iostream.h> #include <stdli-.h> int main () { char mO-u88er >/00?; 8loat *rice; int 4uantitO; cout << "Gnter *rice= "; cin.#etline (mO-u88erD/00); *rice + ato8 (mO-u88er); cout << "Gnter 4uantitO= "; cin.#etline (mO-u88erD/00); 4uantitO + atoi (mO-u88er); cout << "Notal *rice= " << *rice$4uantitO; return 0; } >nter "rice8 ..;, >nter QuantitG8 ./ Eotal "rice8 .3.3.

C%c hm <K tha t%c trOn chuii


Ch /&Qn cstring Fstrin#.hH 0hng chb c hm strc"G m cAn c nh&.u hm 0hc th)o tc tr'n chuZ&" U O& %$ l g&O& th&Qu l Ot 1u) c() cc hm thng 8Tng nht+ strcat: char* strcat (char* dest% const char* src); n th'm chuZ& s!c /o phB) cu& c() dest" Cr2 /. dest" strcmp: int strcm" (const char* string#% const char* string$); po Dnh h)& >%u st!in$; / st!in$<" Cr2 /. 0 n,u h)& >%u l bng nh)u" strcpy: char* strc"G (char* dest% const char* src); Cop$ n& 8ung c() s!c cho dest" Cr2 /. dest" str9!n: siFeRt strlen (const char* string); Cr2 /. 8& c() st!in$" Ch* [+ char* hon ton t !ng !ng /O& charJK

s& + Con Crt


Ch*ng t) ; b&,t cc b&,n chBnh l cc nhO m ch*ng t) c th tru$ >ut 8 O& cc t'n" Cc b&,n n$ Ic l u tr tK& nhng chZ cT th trong b nhO" 9& /O& ch !ng trnh c() ch*ng t)6 b nhO m$ tBnh chb l mt 8;$ g<m cc nhO l b$t56 mZ& c mt N) chb >c Nnh" ft DP m hnh tt & /O& b nhO m$ tBnh chBnh l mt ph trong mt thnh ph" Cr'n mt ph tt c2 cc ng& nh .u Ic nh D tun tP /O& mt c& t'n 8u$ nht n'n n,u

ch*ng t) n& ,n D k ph Crn 4 ng 9Ko th ch*ng t) c th tm Ic n!& m 0hng lm ln / chb c mt ng& nh /O& D nh /$" Cang /O& cch tE chVc t !ng tP nh /&Qc nh D cc ng& nh6 hQ &.u hnh tE chVc b nhO thnh nhng D !n nht6 tun tP6 n'n n,u ch*ng t) n& ,n /N trB l trong b nhO ch*ng t) b&,t chBnh >c nhO / chb c mt /N trB /O& N) chb nh /$"

T %n t( 9y <aa chj )**"


#o th-& &m m ch*ng t) 0h)& bo mt b&,n th n ph2& Ic l u tr trong mt /N trB cT th trong b nhO" W& chung ch*ng t) 0hng 1u$,t Nnh n!& no b&,n Ic Xt h tht m)$ mn rng &.u ; Ic lm tP ng bJ& trnh b&'n 8Nch / hQ &.u hnh6 nh ng mt 0h& hQ &.u hnh ; gn mt N) chb cho b&,n th ch*ng t) c th mun b&,t b&,n Ic l u tr J %u" 9&.u n$ c th Ic thPc h&Qn bng cch Xt tr Oc t'n b&,n mt 8u / F6H6 c nghY) l 3a ch c!a3" #B 8T+
ted + 6andO;

D gn cho b&,n ted N) chb c() b&,n andG6 / 0h& Xt tr Oc t'n b&,n andG 8u / F6H ch*ng t) 0hng cAn n& ,n n& 8ung c() b&,n m chb n& ,n N) chb c() n trong b nhO" &2 DS rng b&,n andG Ic Xt J nhO c N) chb (334 / ch*ng t) /&,t nh D)u+
andO + .,; 8red + andO; ted + 6andO;

0,t 1u2 D g&ng nh trong D! < 8 O& %$+

Ch*ng t) ; gn cho 2red n& 8ung c() b&,n andG nh ch*ng t) ; lm rt ln nh&.u 0hc trong nhng phn tr Oc nh ng /O& b&,n ted ch*ng t) ; gn '2a ch m hQ &.u hnh l u g& trN c() b&,n andG6 ch*ng t) /@) g&2 DS n l (334"

Whng b&,n l u tr N) chb c() mt b&,n 0hc Fnh ted J trong /B 8T tr OcH Ic g& l c n trg" Crong C:: con trt c rt nh&.u u &m / ch*ng Ic DS 8Tng rt th -ng >u$'n6 C&,p th5o ch*ng t) D th$ cc b&,n 0&u n$ Ic 0h)& bo nh th, no"

T %n t( tham chi\u )**


sng cch DS 8Tng con trt ch*ng t) c th tru$ >ut trPc t&,p ,n g& trN Ic l u tr trong b&,n Ic trt bJ& n bng cch X tr Oc t'n b&,n con trt mt 8u D)o F$H h J %$ c th Ic 8Nch l 3gi% tra </c trg +di3" # /$6 n,u ch*ng t) /&,t+
-eth + $ted;

Fch*ng t) c th c n l+ 3b5th bng g& trN Ic trt bJ& t583 /eth D m)ng g& trN 5.6 / ted bng (334 / g& trN trt bJ& (334 l 5."

sKn ph2& ph%n b&Qt Ic rng ted c g& trN (3346 nh ng *ted F/O& mt 8u D)o ng tr OcH trt tO& g& trN Ic l u tr trong N) chb (3346 l 5." 4;$ ch* [ DP 0hc b&Qt g&) /&Qc c h)$ 0hng c 8u D)o th)m ch&,u"
/eth $ ted; /eth $ *ted; // &eth &:ng ted ; #<<= > // &eth &:ng gi tr c tr b!i; $? >

T %n t( 9y <aa chj )** W Ic 8=ng nh l mt t&.n t c() b&,n / c th Ic 8Nch l 3<aa chj ca36 / /$ 6Faria-le/ c th Ic c l 3N) chb c() )aria&le#=, T %n t( tham chi\u )** W chb r) rng c& cn Ic tBnh ton l n& 8ung Ic trt bJ& b&u thVc Ic co& nh l mt N) chb" W c th Ic 8Nch l 3gi% tra </c trg +di3"" $mO*ointer Ic c l =$i# t!2 '*+c t!> -&i mypointer=" #o l*c n$6 /O& nhng /B 8T ; /&,t J tr'n
andO + .,; ted + 6andO;

bKn c th 8` 8ng nhn r) tt c2 cc b&u thVc D)u l *ng+


andO ++ ., 6andO ++ /;;0 ted ++ /;;0 $ted ++ .,

Shai +% +i\n >iKu c n trg


# con trt c 0h2 ngng th)m ch&,u trPc t&,p ,n g& trN m ch*ng trt tO& n'n cn th&,t ph2& chb r 0&u 8 l&Qu no m mt b&,n con trt trt tO& 0h)& bo n" # /$6 0h)& bo c() mt b&,n con trt D c mu D)u+
type " pointer_name;

trong type l 0&u 8 l&Qu Ic trt tO&6 0hng ph2& l 0&u c() b2n th%n con trt" #B 8T+
int $ num-er; char $ character; 8loat $ #reatnum-er;

l b) 0h)& bo c() con trt" fZ& b&,n u trt tO& mt 0&u 8 l&Qu 0hc nh)u nh ng c2 b) .u l con trt / ch*ng .u ch&,m mt l Ing b nhO nh nh)u F0Bch th Oc c() mt b&,n con trt t=$ thuc /o hQ &.u hnhH" nh ng 8 l&Qu m ch*ng trt tO& 0hng ch&,m l Ing b nhO nh nh)u6 mt 0&u int6 mt 0&u char / c& cAn lK& 0&u 2loat" C& ph2& nhn mKnh lK& rng 8u D)o F$H m ch*ng t) Xt 0h& 0h)& bo mt con trt chb c nghY) rng+ l mt con trt / hon ton 0hng l&'n 1u)n ,n ton tS th)m ch&,u m ch*ng t) ; >5m >?t tr Oc " 9 !n g&2n chb l h)& tc /T 0hc nh)u Ic b&u 8&`n bJ& c=ng mt 8u"
// my first pointer #include <iostream.h> int main () { int Falue/ + ,D Falue. + /,; int $ mO*ointer; mO*ointer + 6Falue/; $mO*ointer + /0; mO*ointer + 6Falue.; $mO*ointer + .0; cout << "Falue/++" << Falue/ << "/ Falue.++" << Falue.; return 0; } -alue($$(0 / -alue5$$50

Ch* [ rng g& trN c() -alue( / -alue5 Ic th)$ E& mt cch g&n t&,p" 9u t&'n ch*ng t) gn cho mG"ointer N) chb c() -alue( 8=ng ton tS l$ N) chb F6H / D)u ch*ng t) gn (0 cho g& trN Ic trt bJ& mG"ointer6 l g& trN Ic trt bJ& -alue( / /$ ch*ng t) ; DS) b&,n -alue( mt cch g&n t&,p 9 bKn c th th$ rng mt con trt c th m)ng mt /& g& trN trong c=ng mt ch !ng trnh ch*ng t) D lXp lK& 1u trnh /O& -alue5 / /O& c=ng mt con trt" 9%$ l mt /B 8T phVc tKp h!n mt ch*t+
// more pointers #include <iostream.h> int main () { int Falue/ + ,D Falue. + /,; int $*/D $*.; */ + 6Falue/; // p# @ 0Aa chB c4a )al"e# *. + 6Falue.; // p$ @ 0Aa chB c4a )al"e$ $*/ + /0; // gi* trA trC &Di p# @ #E $*. + $*/; // gi* trA trC &Di p$ @ gi* trA trC &Di p# */ + *.; // p# @ p$ ;phFp g*n con trC> $*/ + .0; // gi* trA trC &Di p# @ $E cout << "Falue/++" << Falue/ << "/ Falue.++" << Falue.; return 0; } -alue($$(0 / -alue5$$50

ft 8Ang c th g%$ DP ch* [ c() bKn l+


int $*/D $*.;

8Ang n$ 0h)& bo h)& con trt bng cch Xt 8u D)o F$H tr Oc mZ& con trt" Wgu$'n nh%n l 0&u 8 l&Qu 0h)& bo cho c2 8Ang l int / / th5o thV tP t@ ph2& D)ng tr&6 8u D)o Ic tBnh tr Oc t'n 0&u" Ch*ng t) ; n& ,n &.u n$ trong b& l"n+ Cc ton tS"

C n trg 1 m2ng"
Crong thPc t,6 t'n c() mt m2ng t !ng !ng /O& N) chb phn tS u t&'n c() n6 g&ng nh mt con trt t !ng !ng /O& N) chb c() phn tS u t&'n m n trt tO&6 / /$ thPc t, ch*ng hon ton nh nh)u" #B 8T6 cho h)& 0h)& bo D)u+

int num-ers >.0?; int $ *;

lQnh D)u D hIp lQ+


* + num-ers;

R %$ " / num/ers l t !ng !ng / ch*ng c cang thuc tBnh6 DP 0hc b&Qt 8u$ nht l ch*ng t) c th gn mt g& trN 0hc cho con trt " trong 0h& num/ers lun trt ,n phn tS u t&'n trong D k_ phn tS 0&u int m n Ic Nnh nghY) /O&" # /$6 0hng g&ng nh " h l mt b&,n con trt bnh th -ng6 num/ers l mt con trt hng" ^Qnh gn D)u %$ l 0hng hIp lQ+
num-ers + *;

bJ& / num/ers l mt m2ng Fcon trt hngH / 0hng c g& trN no c th Ic gn cho cc hng" # con trt cang c m& tBnh cht c() mt b&,n n'n tt c2 cc b&u thVc c con trt trong /B 8T 8 O& %$ l hon ton hIp lQ+
// more pointers #include <iostream.h> int main () { int num-ers>,?; int $ *; * + num-ers; $* + /0; *)); $* + .0; * + 6num-ers>.?; $* + 90; * + num-ers ) 9; $* + 10; * + num-ers; $(*)1) + ,0; 8or (int n+0; n<,; n))) cout << num-ers>n? << "D "; return 0; } (0% 50% )0% 60% .0%

Crong b& 3m2ng3 ch*ng t) ; 8=ng 8u ngoXc /ung chb r) phn tS c() m2ng m ch*ng t) mun trt ,n" CXp ngoXc /ung n$ Ic co& nh l ton tS ouuD5t / [ nghY) c() ch*ng 0hng E& 0h& Ic 8=ng /O& b&,n con trt" #B 8T6 h)& b&u thVc D)u %$+
a>,? + 0; $(a),) + 0; // a Goffset of ?H @ E // pointed &y ;a+?> @ E

l hon ton t !ng !ng / hIp lQ bt 0 a l m2ng h)$ l mt con trt"

Shdi t[ c n trg

]h& 0h)& bo con trt c th ch*ng t) D mun chb Nnh r rng ch*ng D trt tO& b&,n no6
int num-er; int $tommO + 6num-er;

l t !ng !ng /O&+


int num-er; int $tommO; tommO + 6num-er;

Crong mt ph?p gn con trt ch*ng t) ph2& lun lun gn N) chb m n trt tO& chV 0hng ph2& l g& trN m n trt tO&" sKn cn ph2& nhO rng 0h& 0h)& bo mt b&,n con trt6 8u D)o F$H Ic 8=ng chb r) n l mt con trt6 / hon ton 0hc /O& ton tS th)m ch&,u" 9 l h)& ton tS 0hc nh)u mXc 8= ch*ng Ic /&,t /O& c=ng mt 8u" # /$6 cc c%u lQnh D)u l 0hng hIp lQ+
int num-er; int $tommO; $tommO + 6num-er;

Wh & /O& m2ng6 trnh b&'n 8Nch cho ph?p ch*ng t) 0hJ& tKo g& trN m con trt trt tO& bng g& trN hng /o th-& &m 0h)& bo b&,n con trt+
char $ terrO + "hello";

trong tr -ng hIp n$ mt 0h& nhO tYnh Ic 8nh chV) "hello" / mt con trt trt tO& 0B tP u t&'n c() 0h& nhO n$ F l 0B tP hH Ic gn cho terrG" W,u "hello" Ic l u tK& N) chb l_k6 lQnh 0h)& bo tr'n c th Ic hnh 8ung nh th, n$+

cn ph2& nhc lK& rng terrG m)ng g& trN (305 chV 0hng ph2& l 'h' h)$ "hello"" s&,n con trt terrG trt tO& mt >%u 0B tP / n c th Ic DS 8Tng nh l & /O& mt m2ng Fh;$ nhO rng mt m2ng chb !n thun l mt con trt hngH" #B 8T6 n,u ch*ng t) mun th)$ 0B tP 'o' bng mt 8u chm th)n6 ch*ng t) c th thPc h&Qn /&Qc bng h)& cch+
terrO>1? + (!(; $(terrO)1) + (!(;

h;$ nhO rng /&,t terrGJ6K l hon ton g&ng /O& /&,t *(terrG!6) mXc 8= b&u thVc thng 8Tng nht l c& u t&'n" #O& mt trong h)& lQnh tr'n >%u 8o terrG trt ,n D c g& trN nh D)u+

C%c phkp t&nh s, h-c 1li p int!r


#&Qc thPc h&Qn cc ph?p tBnh D hc /O& con trt h!& 0hc Do /O& cc 0&u 8 l&Qu D ngu$'n 0hc" Cr Oc h,t6 chb ph?p cng / tr@ l Ic ph?p 8=ng" Wh ng c2 cng / tr@ .u cho 0,t 1u2 phT thuc /o k8ch th*?c c() 0&u 8 l&Qu m b&,n con trt trt tO&" Ch*ng t) th$ c nh&.u 0&u 8 l&Qu 0hc nh)u t<n tK& / ch*ng c th ch&,m chZ nh&.u h!n hoXc Bt h!n cc 0&u 8 l&Qu 0hc" #B 8T6 trong cc 0&u D ngu$'n6 cha! ch&,m l b$t56 sho!t ch&,m k b$t5 / lon$ ch&,m ~ b$t5" &2 DS ch*ng t) c n con trt D)u+
char $mOchar; short $mOshort; lon# $mOlon#;

/ ch*ng ln l It trt tO& nhO (0006 5000 )n8 )000" W,u ch*ng t) /&,t
mOchar)); mOshort)); mOlon#)); mOchar h nh bKn mong I& h D m)ng g& trN /00/" Cu$ nh&'n mOshort D m)ng g& trN .00. / mOlon# m)ng g& trN 9001" Wgu$'n nh%n l 0h& cng th'm l /o mt con trt th

n D trt tO& phn tS t&,p th5o c c=ng 0&u m n ; Ic Nnh nghY)6 / /$ 0Bch th Oc tBnh bng b$t5 c() 0&u 8 l&Qu n trt tO& D Ic cng th'm /o b&,n con trt"

9&.u n$ *ng /O& c2 h)& ph?p ton cng / tr@ & /O& con trt" Ch*ng t) cang hon ton thu Ic 0,t 1u2 nh tr'n n,u /&,t+
mOchar + mOchar ) /; mOshort + mOshort ) /; mOlon# + mOlon# ) /;

Cn ph2& c2nh bo bKn rng c2 h)& ton tS tgng F))H / g&2m F@@H .u c 1u$.n u t&'n lOn h!n ton tS th)m ch&,u F$H6 / /$ b&u thVc D)u %$ c th 8n tO& 0,t 1u2 D)&+
$*)); $*)) + $4));

^Qnh u t&'n t !ng !ng /O& $(*))) &.u m n thPc h&Qn l tgng " FN) chb nhO m n trt tO& chV 0hng ph2& l g& trN trt tO&H" ^Qnh thV h)&6 c2 h)& ton tS tgng F))H .u Ic thPc h&Qn D)u 0h& g& trN c() $4 Ic gn cho $* / D)u c2 1 / p .u tgng l'n l" ^Qnh n$ t !ng !ng /O&+
$* + $4; *)); 4));

Wh ; n& trong cc b& tr Oc6 t& 0hu$'n cc bKn n'n 8=ng cc cXp ngoXc !n trnh nhng 0,t 1u2 0hng mong mun"

C n trg trg tli c n trg


C:: cho ph?p DS 8Tng cc con trt trt tO& cc con trt 0hc g&ng nh l trt tO& 8 l&Qu" 9 lm /&Qc ch*ng t) chb cn th'm mt 8u D)o F$H cho mZ& mVc th)m ch&,u"
char a; char $ -; char $$ c; a + (:(; - + 6a; c + 6-;

g&2 DS rng )6b6c Ic l u J cc nhO 35)06 ?0C5 )n8 (0.056 t) c th m t2 oKn m; tr'n nh D)u+

9&m mO& trong /B 8T n$ l b&,n c6 ch*ng t) c th n& /. n th5o n cch 0hc nh)u6 mZ& cch D t !ng Vng /O& mt g& trN 0hc nh)u+
c lZ m[t -i3n c\ %i]u (char $$) man# #i^ tr_ H0R. *c lZ m[t -i3n c\ %i]u (char$) man# #i^ tr_ ;.90 **c lZ m[t -i3n c\ %i]u (char) man# #i^ tr_ (:(

C n trg >hQng >iKu

Con trt 0hng 0&u l mt loK& con trt Xc b&Qt" W c th trt tO& bt 0 loK& 8 l&Qu no6 t@ g& trN ngu$'n hoXc thPc cho tO& mt >%u 0B tP" 4Kn ch, 8u$ nht c() n l 8 l&Qu Ic trt tO& 0hng th Ic th)m ch&,u tO& mt cch trPc t&,p Fch*ng t) 0hng th 8=ng ton tS th)m ch&,u c /O& ch*ngH / 8& c() n l 0hng >c Nnh / / /$ ch*ng t) ph2& 8=ng ,n ton tS chu$n 0&u 8 l&Qu h)$ ph?p gn chu$n con trt 0hng 0&u thnh mt con trt trt tO& mt loK& 8 l&Qu cT th" ft trong nhng t&Qn Bch c() n l cho ph?p tru$.n th)m D cho hm m 0hng cn chb r 0&u
// integer increaser #include <iostream.h> Foid increase (Foid$ dataD int tO*e) { sIitch (tO*e) { case si:eo8(char) = ($((char$)data)))); -rea%; case si:eo8(short)= ($((short$)data)))); -rea%; case si:eo8(lon#) = ($((lon#$)data)))); -rea%; } } int main () { char a + ,; short - + R; lon# c + /.; increase (6aDsi:eo8(a)); increase (6-Dsi:eo8(-)); increase (6cDsi:eo8(c)); cout << (int) a << "D " << - << "D " << c; return 0; } 4% (0% ()

l mt ton tS c() ngn ng C::6 n tr2 /. mt g& trN hng l 0Bch th Oc tBnh bng b$t5 c() th)m D tru$.n cho n6 /B 8T siFeo2(char) bng ( / 0Bch th Oc c() char l l b$t5"
siFeo2

C n trg hm
C:: cho ph?p th)o tc /O& cc con trt hm" C&Qn Bch tu$Qt /-& n$ cho ph?p tru$.n mt hm nh l mt th)m D ,n mt hm 0hc" 9 c th 0h)& bo mt con trt trt tO& mt hm ch*ng t) ph2& 0h)& bo n nh l 0h)& bo mu c() mt hm nh ng ph2& b)o trong mt cXp ngoXc !n () t'n c() hm / chn 8u D)o F$H ng tr Oc"

// pointer to f"nctions #include <iostream.h> int addition (int aD int -) { return (a)-); } int su-traction (int aD int -) { return (a@-); } int ($minus)(intDint) + su-traction; int o*eration (int ED int OD int ($8unctocall)(intDint)) { int #; # + ($8unctocall)(EDO); return (#); } int main () { int mDn; m + o*eration (;D ,D 6addition); n + o*eration (.0D mD minus); cout <<n; return 0; }

Crong /B 8T n$6 minus l mt con trt ton cTc trt tO& mt hm c h)& th)m D 0&u int6 con trt n$ Ic gm trt tO& hm su/traction6 tt c2 .u tr'n mt 8Ang+
int ($ minus)(intDint) + su-traction;

s& l_ + s WhO 9ng


Cho ,n n)$6 trong cc ch !ng trnh c() ch*ng t)6 tt c2 nhng phn b nhO ch*ng t) c th DS 8Tng l cc b&,n cc m2ng / cc & t Ing 0hc m ch*ng t) ; 0h)& bo" ]Bch c c() ch*ng l c Nnh / 0hng th th)$ E& trong th-& g&)n ch !ng trnh chK$" Wh ng n,u ch*ng t) cn mt l Ing b nhO m 0Bch c c() n chb c th Ic >c Nnh 0h& ch !ng trnh chK$6 /B 8T nh trong tr -ng hIp ch*ng t) nhn thng t&n t@ ng -& 8=ng >c Nnh l Ing b nhO cn th&,t" &2& php J %$ chBnh l - nh? 'n$6 C:: ; tBch hIp h)& ton tS new / delete thPc h&Qn /&Qc n$ 4)& ton tS new / delete chb c trong C::" R phn D)u c() b& ch*ng t) D b&,t nhng th)o tc t !ng !ng /O& cc ton tS n$ trong C" T %n t( new 1 new" # 9 c th c Ic b nhO ng ch*ng t) c th 8=ng ton tS n!X" Ch5o D)u ton tS n$

l t'n 0&u 8 l&Qu / c th l D phn tS cn th&,t Ic Xt trong cXp ngoXc /ung" W tr2 /. mt con trt trt tO& u c() 0h& nhO /@) Ic cp pht" UKng thVc c() ton tS n$ nh D)u+
pointer $ ne= type

hoXc
pointer $ ne= type JelementsK

s&u thVc u t&5n Ic 8=ng cp pht b nhO chV) mt phn tS c 0&u ty0e" ^Qnh thV h)& Ic 8=ng cp pht mt 0h& nhO Fmt m2ngH g<m cc phn tS 0&u ty0e" #B 8T+
int $ -o--O; -o--O + neI int >,?;

trong tr -ng hIp n$6 hQ &.u hnh 8nh chZ cho e phn tS 0&u int trong b nhO / tr2 /. mt con trt trt ,n u c() 0h& nhO" # /$ l*c n$ /o//G trt ,n mt 0h& nhO hIp lQ g<m e phn tS int"

sKn c th ht& t& l c g 0hc nh)u g&) /&Qc 0h)& bo mt m2ng /O& /&Qc cp pht b nhO cho mt con trt nh ch*ng t) /@) lm" 9&.u 1u)n trng nht l k8ch th*?c c() mt m2ng ph2& l mt hng6 &.u n$ g&O& hKn 0Bch th Oc c() m2ng ,n 0Bch th Oc m ch*ng t) chn 0h& th&,t 0, ch !ng trnh trong 0h& cp pht b nhO ng cho ph?p cp pht b nhO trong 1u trnh chK$ /O& 0Bch th Oc bt 0" s nhO ng n& chung Ic 1u2n lB bJ& hQ &.u hnh / trong cc m& tr -ng ) nh&Qm c th chK$ mt l*c /& ch !ng trnh c mt 0h2 ngng c th >2$ r) l h,t b nhO cp pht" W,u &.u n$ >2$ r) / hQ &.u hnh 0hng th cp pht b nhO nh ch*ng t) $'u cu /O& ton tS ne=6 mt con trt null F5roH D Ic tr2 /." # /$ cc bKn n'n 0&m tr) >5m con trt tr2 /. bJ& ton tS ne= c bng null h)$ 0hng+
int $ -o--O; -o--O + neI int >,?; i8 (-o--O ++ Q`aa) { // error assigning memory. Ia(e meas"res. };

T %n t( delete" # b nhO ng chb cn th&,t trong mt 0ho2ng th-& g&)n nht Nnh6 0h& n 0hng cn

8=ng ,n n) th n D Ic g&2& phng c th cp pht cho cc nhu cu 0hc trong t !ng l)&" 9 thPc h&Qn /&Qc n$ t) 8=ng ton tS delete6 8Kng thVc c() n nh D)u+
delete pointer;

hoXc
delete JK pointer;

s&u thVc u t&'n n'n Ic 8=ng g&2& phng b nhO Ic cp pht cho mt phn tS / lQnh thV h)& 8=ng g&2& phng mt 0h& nhO g<m nh&.u phn tS Fm2ngH" Crong hu h,t cc trnh 8Nch c2 h)& b&u thVc l t !ng !ng mXc 8= ch*ng l r rng l h)& ton tS 0hc nh)u"
// remem&8o8matic #include <iostream.h> #include <stdli-.h> int main () { char in*ut >/00?; int iDn; lon# $ lD total + 0; cout << "HoI manO num-ers do Oou Iant to tO*e inC "; cin.#etline (in*utD/00); i+atoi (in*ut); l+ neI lon#>i?; i8 (l ++ Q`aa) eEit (/); 8or (n+0; n<i; n))) { cout << "Gnter num-er= "; cin.#etline (in*utD/00); l>n?+atol (in*ut); } cout << "Lou haFe entered= "; 8or (n+0; n<i; n))) cout << l>n? << "D "; delete>? l; return 0; } ISTT Ho= manG num/ers do Gou =ant to tG"e in7 , >nter num/er 8 ;, >nter num/er 8 190 >nter num/er 8 /00; >nter num/er 8 H >nter num/er 8 9. Bou ha-e entered8 3.% 6)4% (043% ?% )5%

l mt hng D Ic Nnh nghY) trong th /&Qn C:: 8=ng b&u thN con trt null" Crong tr -ng hIp hng D n$ ch ) Nnh nghY) bKn c th tP Nnh nghY) n+
#de8ine Q`aa 0

U=ng _ h)$ Q`aa 0h& 0&m tr) con trt l nh nh)u nh ng /&Qc 8=ng Q`aa /O& con trt Ic DS 8Tng rt rng r;& / &.u n$ Ic 0hu$,n 0hBch g&*p cho ch !ng trnh 8` c h!n"

B nhl <ng tr ng BCHYmC


Con tS new / delete l c 1u$.n C:: / ch*ng 0hng c trong ngn ng C" Crong ngn ng C6 c th DS 8Tng b nhO ng ch*ng t) ph2& DS 8Tng th /&Qn stdli/.h" Ch*ng t) D >5m >?t cch n$ / n cang hIp lQ trong C:: / n /n cAn Ic DS 8Tng trong mt D ch !ng trnh" Im malloc 9%$ l mt hm tEng 1ut cp pht b nhO ng cho con trt" Cu tr*c c() n nh D)u+
-oid * malloc (siFeRt n&ytes);

trong n&ytes l D b$t5 ch*ng t) mun gn cho con trt" 4m n$ tr2 /. mt con trt 0&u Foid$6 / /$ ch*ng t) ph2& chu$n E& 0&u D)ng 0&u c() con trt Bch6 /B 8T+
char $ ronnO; ronnO + (char $) malloc (/0);

9oKn m; n$ cp pht cho con trt ronnO mt 0h& nhO l_ b$t5" ]h& ch*ng t) mun cp pht mt 0h& 8 l&Qu c 0&u 0hc ch)r FlOn h!n l b$t5H ch*ng t) ph2& nh%n D phn tS mong mun /O& 0Bch th Oc c() ch*ng" Cht m)$ mn l ch*ng t) c ton tS si'eof6 ton tS n$ tr2 /. 0Bch th Oc c() mt 0&u 8 l&Qu cT th"
int $ -o--O; -o--O + (int $) malloc (, $ si:eo8(int));

9oKn m; n$ cp pht cho -o--O mt 0h& nhO g<m e D ngu$'n 0&u int6 0Bch c c() 0&u 8 l&Qu n$ c th bng k6 ~ h)$ h!n t=$ thuc /o hQ thng m ch !ng trnh Ic 8Nch" Im calloc" calloc hoKt ng rt g&ng /O& malloc6 DP 0hc nh)u ch( $,u l 0h)& bo mu c() n+
-oid * calloc (siFeRt nelements% siFeRt si'e);

n DS 8Tng h)& th)m D th)$ / mt" 4)& th)m D n$ Ic nh%n /O& nh)u c Ic 0Bch th Oc tEng cng c() 0h& nhO cn cp pht" Chng th -ng th)m D u t&'n FnelementsH l D phn tS / th)m D thVc h)& Fsi'eH l 0Bch th Oc c() mZ& phn tS" #B 8T6 ch*ng t) c th Nnh nghY) -o--O /O& calloc nh D)u+
int $ -o--O; -o--O + (int $) calloc (,D si:eo8(int));

ft &m 0hc nh)u n) g&) malloc / calloc l calloc 0hJ& tKo tt c2 cc phn tS c() n /. _"

Im realloc" W th)$ E& 0Bch th Oc c() 0h& nhO ; Ic cp pht cho mt con trt"
-oid * realloc (-oid * pointer% siFeRt si'e);

th)m D pointer nhn /o mt con trt ; Ic cp pht b nhO h)$ mt con trt null6 / si'e chb Nnh 0Bch th Oc c() 0h& nhO mO&" 4m n$ D cp pht si'e b$t5 b nhO cho con trt" W c th ph2& th)$ E& /N /N trB c() 0h& nhO c th ( chZ cho 0Bch th Oc mO& c() 0h& nhO6 trong tr -ng hIp n$ n& 8ung h&Qn th-& c() 0h& nhO Ic cop$ tO& /N trB mO& 2m b2o 8 l&Qu 0hng bN mt" Con trt mO& trt tO& 0h& nhO Ic hm tr2 /." W,u 0hng th th)$ E& 0Bch th Oc c() 0h& nhO th hm D tr2 /. mt con trt null nh ng th)m D pointer / n& 8ung c() n D 0hng bN th)$ E&" Im free" 4m n$ g&2& phng mt 0h& nhO ng ; Ic cp pht bJ& malloc6 calloc hoXc realloc"
-oid 2ree (-oid * pointer);

4m n$ chb Ic 8=ng g&2& phng b nhO Ic cp pht bJ& cc hm malloc6 calloc )n8 realloc"

s& ll + Cc Cu Cr*c

C%c cu trc 4n 9i8u"


ft cu tr*c 8 l&Qu l mt tp hIp c() nhng 0&u 8 l&Qu 0hc nh)u Ic gp lK& /O& mt c& t'n 8u$ nht" UKng thVc c() n nh D)u+
struct model9name : type# element#; type$ element$; type! element!; . . ; o&Ject9name;

trong model9name l t'n c() mu 0&u 8 l&Qu / th)m D t=$ chn o&Ject9name mt t'n hIp lQ cho & t Ing" s'n trong cXp ngoXc nhn l t'n cc phn tS c() cu tr*c / 0&u c() ch*ng" W,u Nnh nghY) c() cu tr*c b)o g<m th)m D model9name Ftur chnH6 th)m D n$ trJ thnh mt t'n 0&u hIp lQ t !ng !ng /O& cu tr*c" #B 8T+
struct *roducts { char name >90?; 8loat *rice; } ;

*roducts a**le; *roducts oran#eD melon;

Ch*ng t) ; Nnh nghY) cu tr*c "roducts /O& h)& tr -ng+ name / "rice6 mZ& tr -ng c mt 0&u 0hc nh)u" Ch*ng t) cang ; DS 8Tng t'n c() 0&u cu tr*c F"roductsH 0h)& bo b) & t Ing c 0&u + a""le6 oran#e / melon" p)u 0h& Ic 0h)& bo6 "roducts trJ thnh mt t'n 0&u hIp lQ g&ng cc 0&u c! b2n nh int6 cha! h)$ sho!t" Cr -ng tur chn o&Ject9name c th nm J cu& c() phn 0h)& bo cu tr*c 8=ng 0h)& bo trPc t&,p & t Ing c 0&u cu tr*c" #B 8T6 0h)& bo cc & t Ing a""le6 oran#e / melon nh ; lm J phn tr Oc ch*ng t) cang c th lm th5o cch D)u+
struct *roducts { char name >90?; 8loat *rice; } a**leD oran#eD melon;

4!n n)6 trong tr -ng hIp n$ th)m D model9name trJ thnh tur chn" fXc 8= n,u model9name 0hng Ic DS 8Tng th ch*ng t) D 0hng th 0h)& bo th'm cc & t Ing c 0&u mu n$" ft &.u 1u)n trng l cn ph%n b&Qt r rng %u l >iKu mcu cu tr*c6 %u l <,i t/ng cu tr*c" W,u 8=ng cc thut ng ch*ng t) ; DS 8Tng /O& cc b&,n6 0&u mu l t'n 0&u 8 l&Qu cAn & t Ing l cc b&,n" p)u 0h& ; 0h)& bo b) & t Ing c 0&u l mt mu cu tr*c >c Nnh Fa""le6 oran#e )n8 melonH ch*ng t) c th th)o tc /O& cc tr -ng tKo n'n ch*ng" 9 lm /&Qc n$ ch*ng t) DS 8Tng mt 8u chm F.H chn J g&) t'n & t Ing / t'n tr -ng" #B 8T6 ch*ng t) c th th)o tc /O& bt 0 phn tS no c() cu tr*c nh l & /O& cc b&,n chuLn +
a**le.name a**le.*rice oran#e.name oran#e.*rice melon.name melon.*rice

mZ& tr -ng c 0&u 8 l&Qu t !ng Vng+ a""le.name6 oran#e.name / melon.name c 0&u charJ)0K6 / a""le."rice6 oran#e."rice / melon."rice c 0&u 2loat" Ch*ng t) tKm b&Qt )ppl5D6 or)ng5D / m5lonD ,n /O& mt /B 8T /. cc b ph&m+
// e%ample a&o"t str"ct"res #include <iostream.h> #include <strin#.h> >nter title8 blien >nter Gear8 /R;R

#include <stdli-.h> struct moFiesct { char title >,0?; int Oear; } mineD Oours; Foid *rintmoFie (moFiesct moFie); int main () { char -u88er >,0?; strc*O (mine.titleD ".00/ b X*ace YdOsseO"); mine.Oear + /R0H; cout << "Gnter title= "; cin.#etline (Oours.titleD,0); cout << "Gnter Oear= "; cin.#etline (-u88erD,0); Oours.Oear + atoi (-u88er); "; cout << "VO 8aFourite moFie is=Mn *rintmoFie (mine); cout << "bnd Oours=Mn "; *rintmoFie (Oours); return 0; } Foid *rintmoFie (moFiesct moFie) { cout << moFie.title; cout << " (" << moFie.Oear << ")Mn"; }

PG 2a-ourite mo-ie is8 500( 1 O"ace UdGsseG ((C4?) 1nd Gours8 1lien ((C3C)

#B 8T n$ cho ch*ng t) th$ cch DS 8Tng cc phn tS c() mt cu tr*c / b2n th%n cu tr*c nh l cc b&,n thng th -ng" #B 8T6 Gours.Gear l mt b&,n hIp lQ c 0&u int cang nh mine.title l mt m2ng hIp lQ /O& e_ phn tS 0&u cha!s" Ch* [ rng c2 mine )n8 Gours .u Ic co& l cc b&,n hIp lQ 0&u mo-ieRt 0h& Ic tru$.n cho hm "rintmo-ie()"4!n n) mt lI& th, 1u)n trng c() cu tr*c l ch*ng t) c th >?t cc phn tS c() ch*ng mt cch r&'ng b&Qt hoXc ton b cu tr*c nh l mt 0h&" Cc cu tr*c Ic DS 8Tng rt nh&.u >%$ 8Png c! DJ 8 l&Qu Xc b&Qt n,u ch*ng t) >?t ,n 0h2 ngng >%$ 8Png cc m2ng c() ch*ng"
// array of str"ct"res >nter title8 blien

#include <iostream.h> #include <stdli-.h> #de8ine QcVYd'GX , struct moFiesct { char title >,0?; int Oear; } 8ilms >QcVYd'GX?; Foid *rintmoFie (moFiesct moFie); int main () { char -u88er >,0?; int n; 8or (n+0; n<QcVYd'GX; n))) { cout << "Gnter title= "; cin.#etline (8ilms>n?.titleD,0); cout << "Gnter Oear= "; cin.#etline (-u88erD,0); 8ilms>n?.Oear + atoi (-u88er); } cout << "MnLou haFe entered these moFies=Mn"; 8or (n+0; n<QcVYd'GX; n))) *rintmoFie (8ilms>n?); return 0; } Foid *rintmoFie (moFiesct moFie) { cout << moFie.title; cout << " (" << moFie.Oear << ")Mn"; }

>nter >nter >nter >nter >nter >nter >nter >nter >nter

Gear8 /R;R title8 elade Kunner Gear8 /RH. title8 VatriE Gear8 /RRR title8 Kear WindoI Gear8 /R,1 title8 NaEi TriFer Gear8 /R;,

Bou ha-e entered these mo-ies8 1lien ((C3C) 0lade Aunner ((C?5) Patri< ((CCC) Aear Windo= ((C.6) Ea<i Vri-er ((C3.)

C n trg trg <\n cu trc


Wh bt 0 cc 0&u 8 l&Qu no 0hc6 cc cu tr*c c th Ic trt ,n bJ& con trt" du$ tc hon ton g&ng nh & /O& bt 0 0&u 8 l&Qu c! b2n no+
struct moFiesct { char title >,0?; int Oear; }; moFiesct amoFie; moFiesct $ *moFie;

R %$ amo-ie l mt & t Ing c 0&u mo-iesRt / "mo-ie l mt con trt trt tO& & t Ing mo-iesRt" v]6 b%$ g&- ch*ng t) D ,n /O& mt /B 8T 0hc6 n D g&O& th&Qu mt ton tS mO&+
// pointers to str"ct"res #include <iostream.h> #include <stdli-.h> struct moFiesct { char title >,0?; int Oear; }; int main () { char -u88er>,0?; moFiesct amoFie; moFiesct $ *moFie; *moFie + 6 amoFie; cout << "Gnter title= "; cin.#etline (*moFie@>titleD,0); cout << "Gnter Oear= "; cin.#etline (-u88erD,0); *moFie@>Oear + atoi (-u88er); cout << "MnLou haFe entered=Mn"; cout << *moFie@>title; cout << " (" << *moFie@>Oear << ")Mn"; } return 0; >nter title8 VatriE >nter Gear8 /RRR Bou ha-e entered8 Patri< ((CCC)

9oKn m; tr'n g&O& th&Qu mt &.u 1u)n trng+ ton tS &>" 9%$ l mt ton tS th)m ch&,u chb 8=ng trt tO& cc cu tr*c / cc lOp Fcl)DDH" W cho ph?p ch*ng t) 0hng ph2& 8=ng ngoXc mZ& 0h& th)m ch&,u ,n mt phn tS c() cu tr*c" Crong /B 8T n$ ch*ng t) DS 8Tng+
moFies@>title

n c th Ic 8Nch thnh+
($moFies).title

c2 h)& b&u thVc mo-ies&>title / (*mo-ies).title .u hIp lQ / ch*ng .u 8=ng th)m ch&,u ,n phn tS title c() cu tr*c Ic trt bJ& mo-ies" sKn cn ph%n b&Qt r rng /O&+

$moFies.title

n t !ng !ng /O&


$(moFies.title)

lQnh n$ 8=ng tBnh ton g& trN Ic trt bJ& phn tS title c() cu tr*c mo-ies6 trong tr -ng hIp n$ Ft&tl5 0hng ph2& l mt con trtH n chng c [ nghY) g nh&.u" s2n 8 O& %$ tEng 0,t tt c2 cc 0,t hIp c th Ic g&) con trt / cu tr*c+ BiKu th.c
mo-ies.title mo-ies&>title *mo-ies.title

MQ t2 hn tS title c() cu tr*c mo-ies hn tS title c() cu tr*c Ic trt bJ&


mo-ies

Tng <ng 1li

($moFies).title $(moFies.title)

& trN Ic trt bJ& phn tS title c() cu tr*c mo-ies

C%c cu trc 9ong nhau


Cc cu tr*c c th Ic Xt l<ng nh)u / /$ mt phn tS hIp lQ c() mt cu tr*c c th l mt cu tr*c 0hc"
struct moFiesct { char title >,0?; int Oear; } struct 8riendsct { char name >,0?; char email >,0?; moFiesct 8aFouritecmoFie; } charlieD maria; 8riendsct $ *8riends + 6charlie;

# /$6 D)u phn 0h)& bo tr'n ch*ng t) c th DS 8Tng cc b&u thVc D)u+
charlie.name maria.8aFouritecmoFie.title charlie.8aFouritecmoFie.Oear *8riends@>8aFouritecmoFie.Oear

Ftrong h)& b&u thVc cu& c=ng l t !ng !ngH" Cc 0h& n&Qm c! b2n /. cu tr*c Ic . cp ,n trong phn n$ l hon ton g&ng /O& ngn ng C6 tu$ nh&'n trong C::6 cu tr*c ; Ic mJ rng th'm cc chVc ngng c() mt

lOp /O& tBnh cht Xc tr ng l tt c2 cc phn tS c() n .u l cng cng Fpubl&cH" sKn D c th'm cc thng t&n ch& t&,t trong phn ~"l6 ^Op"

s& lk+Cc ]&u U ^&Qu Uo Wg -& U=ng 9Nnh WghY)


Crong b& tr Oc ch*ng t) ; >5m >?t mt loK& 8 l&Qu Ic Nnh nghY) bJ& ng -& 8=ng Fng -& lp trnhH+ cu tr*c" Wh ng c cAn nh&.u 0&u 8 l&Qu tP Nnh nghY) 0hc+

TN <anh nghpa c%c >iKu 4n 9i8u )tG"ede2*"


C:: cho ph?p ch*ng t) Nnh nghY) cc 0&u 8 l&Qu c() r&'ng mnh 8P) tr'n cc 0&u 8 l&Qu ; c" 9 c th lm /&Qc ch*ng t) D DS 8Tng t@ 0ho tG"ede26 8Kng thVc nh D)u+
tG"ede2 e%isting9type new9type9name ;

trong e%isting9type l mt 0&u 8 l&Qu c! b2n h)$ bt 0 mt 0&u 8 l&Qu ; Nnh nghY) / new9type9name l t'n c() 0&u 8 l&Qu mO&" #B 8T
tO*ede8 tO*ede8 tO*ede8 tO*ede8 char C; unsi#ned int WYKT; char $ strin#ct; char 8ield >,0?;

Crong tr -ng hIp n$ ch*ng t) ; Nnh nghY) bn 0&u 8 l&Qu mO&+ 6 WUAV6 strin#Rt / 2ield 0&u char6 unsi#ned int6 char* 0&u charJ.0K6 ch*ng t) hon ton c th DS 8Tng ch*ng nh l cc 0&u 8 l&Qu hIp lQ+
C acharD anothercharD $*tchar/; WYKT mOIord; strin#ct *tchar.; 8ield name;

c th hu 8Tng 0h& bKn mun Nnh nghY) mt 0&u 8 l&Qu Ic 8=ng lXp & lXp lK& trong ch !ng trnh hoXc 0&u 8 l&Qu bKn mun 8=ng c t'n 1u 8& / bKn mun n c t'n ngn h!n"
tO*ede8

qni n
n&on cho ph?p mt phn b nhO c th Ic tru$ >ut 8 O& 8Kng nh&.u 0&u 8 l&Qu 0hc nh)u mXc 8= tt c2 ch*ng .u nm c=ng mt /N trB trong b nhO" hn 0h)& bo / DS 8Tng n t !ng tP /O& cu tr*c nh ng chVc ngng th 0hc hon ton+
union model9name : type# element#; type$ element$; type! element!;

. . ; o&Ject9name;

Ct c2 cc phn tS c() union .u ch&,m c=ng mt chZ trong b nhO" ]Bch th Oc c() n l 0Bch th Oc c() phn tS lOn nht" #B 8T+
union mOtO*esct { char c; int i; 8loat 8; } mOtO*es;

Nnh nghY) b) phn tS


mOtO*es.c mOtO*es.i mOtO*es.8

mZ& phn tS c mt 0&u 8 l&Qu 0hc nh)u" Wh ng / tt c2 ch*ng .u nm c=ng mt chZ trong b nhO n'n bt 0 DP th)$ E& no & /O& mt phn tS D 2nh h Jng tO& tt c2 cc thnh phn cAn lK&" ft trong nhng cng 8Tng c() union l 8=ng 0,t hIp mt 0&u 8 l&'u c! b2n /O& mt m2ng h)$ cc cu tr*c g<m cc phn tS nht h!n" #B 8T+
union miEct{ lon# l; struct { short hi; short lo; } s; char c>1?; } miE;

Nnh nghY) b) phn tS cho ph?p ch*ng t) tru$ >ut ,n c=ng mt nhm ~ b$t5+ mi<.l6 mi<.s / mi<.c m ch*ng t) c th DS 8Tng tur th5o /&Qc ch*ng t) mun tru$ >ut ,n nhm ~ b$t5 n$ nh th, no" C& 8=ng nh&.u 0&u 8 l&Qu 0hc nh)u6 m2ng / cu tr*c trong un&on bKn c th th$ cc cch 0hc nh)u m ch*ng t) c th tru$ >ut 8 l&Qu"

C%c uni ns 1Q 4anh

Crong C:: ch*ng t) c th DS 8Tng cc un&onD / 8)nh" W,u ch*ng t) Xt mt un&on trong mt cu tr*c m 0hng . t'n Fphn & D)u cXp ngoXc nhn { }H un&on D trJ thnh / 8)nh / ch*ng t) c th tru$ >ut trPc t&,p ,n cc phn tS c() n m 0hng cn ,n t'n c() un&on Fc cn cang 0hng IcH" #B 8T6 h;$ >5m >?t DP 0hc b&Qt g&) h)& phn 0h)& bo D)u %$+ uni n
struct { char title>,0?; char author>,0?; union { 8loat dollars; int Oens; } *rice; } -oo%;

uni n 1Q 4anh
struct { char title>,0?; char author>,0?; union { 8loat dollars; int Oens; }; } -oo%;

pP 0hc b&Qt 8u$ nht g&) h)& oKn m; n$ l trong oKn m; u t&'n ch*ng t) Xt t'n cho un&on F"riceH cAn trong c& thV h)& th 0hng" ]h& tru$ nhp /o cc phn tS dollars / Gens6 trong tr -ng hIp thV nht ch*ng t) /&,t+
-oo%.*rice.dollars -oo%.*rice.Oens

cAn trong tr -ng hIp thV h)&+


-oo%.dollars -oo%.Oens

ft ln n) t& nhc lK& rng / n l mt un&on6 h)& tr -ng dollars / Gens .u ch&,m c=ng mt chZ trong b nhO n'n ch*ng 0hng th g& h)& g& trN 0hc nh)u"

SiKu 9i8t >O )enum*


]&u 8 l&Qu l&Qt 0' 8=ng tKo r) cc 0&u 8 l&Qu chV) mt c& g h!& Xc b&Qt mt ch*t6 0hng ph2& 0&u D h)$ 0&u 0B tP hoXc cc hng true / 2alse" UKng thVc c() n nh D)u+
enum model9name : )al"e#% )al"e$% )al"e!% . . ; o&Ject9name;

#B 8T6 ch*ng t) c th tKo r) mt 0&u 8 l&Qu mO& c t'n color l u tr cc mu /O& phn 0h)& bo nh D)u+

enum colorsct {-lac%D -lueD #reenD cOanD redD *ur*leD OelloID Ihite};

Ch* [ rng ch*ng t) 0hng DS 8Tng bt 0 mt 0&u 8 l&Qu c! b2n no trong phn 0h)& bo" Ch*ng t) ; tKo r) mt 0&u 8 l&Qu mO& m 0hng 8P) tr'n bt 0 0&u 8 l&Qu no c Dn+ 0&u colorRt6 nhng g& trN c th c() 0&u colorRt Ic /&,t trong cXp ngoXc nhn {}" #B 8T6 D)u 0h& 0h)& bo 0&u l&Qt 0'6 b&u thVc D)u D l hIp lQ+
colorsct mOcolor; mOcolor + -lue; i8 (mOcolor ++ #reen) mOcolor + red;

Cr'n thPc t, 0&u 8 l&Qu l&Qt 0' Ic 8Nch l mt D ngu$'n / cc g& trN c() n l cc hng D ngu$'n Ic chb Nnh" W,u &.u n$ 0hng Poc chb Nnh6 g& trN ngu$'n t !ng !ng /O& phn tS u t&'n l 0 / cc g& trN t&,p th5o cV th, tgng l'n l6 # /$6 trong 0&u 8 l&Qu colorsRt m ch*ng t) Nnh nghY) J tr'n6 =hite t !ng !ng /O& 06 /lue t !ng !ng /O& (6 #reen t !ng !ng /O& k / cV t&,p tTc nh th," W,u ch*ng t) chb Nnh mt g& trN ngu$'n cho mt g& trN no c() 0&u 8 l&Qu l&Qt 0' Ftrong /B 8T n$ l phn tS u t&'nH cc g& trN t&,p th5o D l cc g& trN ngu$'n t&,p th5o6 /B 8T+
enum monthsct { SanuarO+/D 8e-ruarOD marchD a*rilD maOD SuneD SulOD au#ustD se*tem-erD octo-erD noFem-erD decem-er} O.%;

trong tr -ng hIp n$6 b&,n G5D c 0&u 8 l&Qu l&Qt 0' monthsRt c th chV) mt trong lk g& trN t@ LanuarG ,n decem/er / t !ng !ng /O& cc g& trN ngu$'n t@ ( ,n (56 0hng ph2& 0 ,n (( / ch*ng t) ; Xt LanuarG bng ( Wgu<n &nt5rn5t

You might also like