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:: nhng 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 prgram 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 hJng 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 nhng 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 istr!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 istr!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" cut l mt 8Ang FDtr5)mH
output chuLn trong C:: Ic Nnh nghY) trong th /&Qn istr!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 nhng
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 th!ch theo d"n#
/$ Ch 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:: nhng 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 prgram 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 hJng 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 nhng 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 istr!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 istr!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" cut l mt 8Ang FDtr5)mH
output chuLn trong C:: Ic Nnh nghY) trong th /&Qn istr!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 nhng
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 th!ch theo d"n#
/$ Ch 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& trOc 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& nhng 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 ngIc
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 hJng ,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+

: cng
h tr@
c nh%n
G ch&)
i 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 86 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 trOc 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) nhng 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 trOc 0h& b&u thVc Ic tBnh / g& trN ; tgng
Ic DS 8Tng trong b&u thVc\ trong tr-ng hIp ngIc lK& Fa++H g& trN trong b&,n
) Ic tgng D)u 0h& ; tBnh ton" 4;$ ch* [ DP 0hc b&Qt +
3& 45 1 3& 45 6
0$);
1$!!0;
// A is 4, is 4
0$);
1$0!!;
// 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+
(3 $$ .)
D tr2 g& trN 2alse
(4 >$ 4)
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

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 trOc 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( 9gic ) !% **% ,, *"
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& ngIc g& trN c() & D t@ tru! D)ng fa9s!
hoXc ngIc 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
a
9& D thV h)&
+
23t 4u5
a ** /
23t 4u5
a ,, /
tru5 tru5 tru! tru!
tru5 u)lD5 fa9s! tru!
u)lD5 tru5 fa9s! tru!
u)lD5 u)lD5 fa9s! fa9s!
#B 8T+
( (. $$ .) ** () > 4) ) tr2 /. 2alse ( tr"e 66 false )"
( (. $$ .) ,, () > 4)) tr2 /. true ( tr"e 77 false )"
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$"
3$$. 7 6 8 )
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 /"

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 BCD ^og&c)l oWU
x EF ^og&c)l vy
z GEF ^og&c)l 5>cluD&/5 vy
{ CET 92o ngIc 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 trOc 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( nhng t& th$ n
c /j 0hng >u& t)& lmH th)$ / 8=ng cc ton tS + Xt trOc 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 trng cho lp trnh hOng & tIng"

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)$ & tIng "
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 trOc 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 hOng & tIng" 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 trOc6 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 + , ) (; < .) /O& 0,t 1u2 l P6 hoXc
a + (, ) ;) < . /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. tNT%n t( MQ t2 Bssciati1ity
l
==
Dcop5 Cr&
k
() > ? @> . si:eo8
Cr&
n
)) @@
tgngGg&2m
h2&
A
92o ngIc b&t
!
WvC
6 $
Con tS con trt
(type)
Chu$n E& 0&u
) @
U!ng hoXc %m
~
$ / <
Con tS D hc Cr&
e
) @
Con tS D hc Cr&

<< >>
UNch b&t Cr&

< <+ > >+


Con tS 1u)n hQ Cr&

++ !+
Con tS 1u)n hQ Cr&

6 B 7
Con tS th)o tc b&t Cr&
l_
66 77
Con tS log&c Cr&
ll
C=
Con tS &.u 0&Qn h2&
lk
+ )+ @+ $+ /+ <+
>>+ <<+ 6+ B+ 7+
Con tS gn h2&
ln
D
Uu phL$ 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 trOc6 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
nhng 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 is *ositiFe";
else i8 (E < 0)
cout << "E is ne#atiFe";
else
cout << "E 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 ngIc 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
ngIc" 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 8O& %$ 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 (0 to end)8 /.91,
Bou entered8 (5)6.
>nter num/er (0 to end)8 /00.;;
Bou entered8 (40533
>nter num/er (0 to end)8 0
Bou entered8 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" Whng 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 ln"
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& bOc k"
p)u %$ l mt /B 8T ,m ngIc 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)
nhng /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 ngIc trOc 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 ngIc+
// &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 gt ,m ngIc+
// 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);
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&"
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 if-else tng <ng
sIitch (E) {
case /=
cout << "E is /";
-rea%;
case .=
cout << "E is .";
-rea%;
de8ault=
cout << "Falue o8 E
un%noIn";
}
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"
UO& %$ 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 trOc 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" Whng 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 2irst result is .
Ehe second result is .
Ehe third result is 5
Ehe 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 nhng 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" Whng n,u ch*ng t) 0hng mun tr2 /. g& trN no th D)o
4;$ tJng tIng 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 hJng 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 8O& 8Kng th)m D b&,n nh J trong hm du"licate trong /B 8T
8O& %$+
// 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 8O& 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 hJng 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 hJng ,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 8O& 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 trOc / 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
.
Whng 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 nhng 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 nhng 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 nhng &.u n$ 0hng bt buc"
sKn c th >%$ 8Png h)& hm c c=ng t'n nhng hoKt ng hon ton 0hc nh)u"
C%c hm inline"
Chb thN inline c th Ic Xt trOc 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 nhng 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 trOc 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 trOc %$ nhng thS Xt hm main trOc 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 trOc 0h& n Ic g& nh nhngg> g ch*ng t) ; lm trng tt c2 cc
/B 8T"
Whng c mt cch 0hc trnh ph2& /&,t tt c2 m; ch!ng trnh trOc 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 nhng ( 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 num/er (0 to e<it)8 R
Ium/er is odd.
EG"e a num/er (0 to e<it)8 0
Ium/er is e-en.
EG"e a num/er (0 to e<it)8 /090
Ium/er is e-en.
EG"e a num/er (0 to e<it)8 0
Ium/er is e-en.
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 trOc 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 trOc 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 lu 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 trOc 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 f9at"""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 trOc 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)
lu 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+


Whng 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
thOc 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 trOc 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 lu 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 nhng 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 thOc 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>,?; // (hai &*o m+t m,ng m-i.
-illO>.? + ;,; // tr"y %"/t 01n m+t ph2n t3 c4a
m,ng.
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 tJng tIc nh l mt b2ng h)& ch&.u g<m cc phn tS c 0&u 8 l&Qu cT th /
g&ng nh)u"
SimmO b&u 8&`n mt m2ng h)& ch&.u 0Bch thOc n>e c 0&u int" Cch 0h)& bo m2ng
n$ nh D)u+
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 lIng 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 tIng / 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 /O&
int LimmG J(.K; Fn c e m leH
UO& %$ 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 nhng 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 thOc 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 nhng 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);
UO& %$ 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 nhng 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&
'"'" Cn 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" Whng 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 8O& 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 lu 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 lu 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 lu mt >%u 0B tP /O& 8& cPc K& l k_ 0B tP" sKn c th tJng tIng n nh
D)u+
]Bch thOc cPc K& n$ 0hng cn ph2& lun lun 8=ng ,n" #B 8T6 LennG c th lu >%u
"Hello" haO "VerrO christmas"" # cc m2ng 0B tP c th lu 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& lu 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 trOc 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 thOc
0B tP+ e 0B tP b&u 8&`n Hello cng /O& mt 0B tP null"
CrOc 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 8O& %$ 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 $ 'H';
mGstrin#J(K $ 'e';
mGstrin#J5K $ 'l';
mGstrin#J)K $ 'l';
mGstrin#J6K $ 'o';
mGstrin#J.K $ 'M0';
Whng 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# 8O& %$
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 lu tr 8 l&Qu /o Fnh l mt m2ng chng
hKnH6 length l 8& cPc K& c() b Qm F0Bch thOc 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 nhng 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 ()
{
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;
}
Vilan
I liDe Inter Pilan too.
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 thOc 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"nhng 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+
ati: chu$n >%u thnh 0&u int"
at9: chu$n >%u thnh 0&u lon#"
atf: 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&" UO& %$ l g&O& th&Qu lOt 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 8O& cc t'n"
Cc b&,n n$ Ic lu 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 4ng 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 lu 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 nhng
mt 0h& hQ &.u hnh ; gn mt N) chb cho b&,n th ch*ng t) c th mun b&,t b&,n
Ic lu tr J %u"
9&.u n$ c th Ic thPc h&Qn bng cch Xt trOc 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 trOc 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! < 8O& %$+
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 trOc nhng /O& b&,n ted ch*ng t) ; gn '2a ch m hQ &.u hnh lu
g& trN c() b&,n andG6 ch*ng t) /@) g&2 DS n l (334"
Whng b&,n lu tr N) chb c() mt b&,n 0hc Fnh ted J trong /B 8T trOcH Ic g& l
cn 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 lu tr
trong b&,n Ic trt bJ& n bng cch X trOc 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 nhng *ted F/O& mt 8u D)o ng
trOcH trt tO& g& trN Ic lu 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 &:ng ted ; #<<= >
/eth $ *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 cn 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 nhng c2
b) .u l con trt / ch*ng .u ch&,m mt lIng b nhO nh nh)u F0Bch thOc c() mt
b&,n con trt t=$ thuc /o hQ &.u hnhH" nhng 8 l&Qu m ch*ng trt tO& 0hng ch&,m
lIng 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 trOc " 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 trOc 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 trOc t'n 0&u" Ch*ng t) ; n& ,n &.u n$ trong b& l"n+ Cc ton tS"
Cn 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 8O& %$ 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 Goffset of ?H @ E
$(a),) + 0; // pointed &y ;a+?> @ E
l hon ton t!ng !ng / hIp lQ bt 0 a l m2ng h)$ l mt con trt"
Shdi t[ cn 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 lu 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 pint!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" CrOc h,t6 chb ph?p cng / tr@ l Ic ph?p 8=ng" Whng 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 lIt 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 thOc
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& trOc6 t& 0hu$'n cc bKn n'n 8=ng cc cXp ngoXc !n trnh
nhng 0,t 1u2 0hng mong mun"
Cn trg trg tli cn 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 lu 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_ (:(
Cn 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% ()
siFeo2 l mt ton tS c() ngn ng C::6 n tr2 /. mt g& trN hng l 0Bch thOc tBnh
bng b$t5 c() th)m D tru$.n cho n6 /B 8T siFeo2(char) bng ( / 0Bch thOc c() char
l l b$t5"
Cn 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 nhng ph2& b)o trong
mt cXp ngoXc !n () t'n c() hm / chn 8u D)o F$H ng trOc"
// 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 & tIng 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$" Whng n,u
ch*ng t) cn mt lIng 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
lIng 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 thOc c() m2ng ,n 0Bch thOc 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 thOc 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;
}
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%
ISTT 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 nhng /&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 trng 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 thOc c() ch*ng" Cht m)$ mn l ch*ng t) c ton tS si'eof6 ton
tS n$ tr2 /. 0Bch thOc 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
thOc 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 thOc 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 thOc 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 thOc 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 thOc
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 thOc c() 0h& nhO th hm D tr2 /. mt con trt null nhng
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 & tIng" 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) & tIng 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 & tIng c 0&u cu tr*c" #B 8T6 0h)& bo cc & tIng a""le6
oran#e / melon nh ; lm J phn trOc 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 & tIng
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 & tIng l cc b&,n"
p)u 0h& ; 0h)& bo b) & tIng 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 & tIng / 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 Gear8 /R;R
>nter title8 elade Kunner
>nter Gear8 /RH.
>nter title8 VatriE
>nter Gear8 /RRR
>nter title8 Kear WindoI
>nter Gear8 /R,1
>nter title8 NaEi TriFer
>nter 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.)
Cn 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 & tIng c 0&u mo-iesRt / "mo-ie l mt con trt trt tO& &
tIng 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 8O&
%$ tEng 0,t tt c2 cc 0,t hIp c th Ic g&) con trt / cu tr*c+
BiKu th.c MQ t2 Tng <ng 1li
mo-ies.title
hn tS title c() cu tr*c mo-ies

mo-ies&>title
hn tS title c() cu tr*c Ic trt bJ&
mo-ies
($moFies).title
*mo-ies.title
& trN Ic trt bJ& phn tS title c() cu
tr*c mo-ies
$(moFies.title)
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 trng 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& trOc ch*ng t) ; >5m >?t mt loK& 8 l&Qu Ic Nnh nghY) bJ& ng-& 8=ng
Fng-& lp trnhH+ cu tr*c" Whng 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 char C;
tO*ede8 unsi#ned int WYKT;
tO*ede8 char $ strin#ct;
tO*ede8 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;
tO*ede8 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"
qnin
n&on cho ph?p mt phn b nhO c th Ic tru$ >ut 8O& 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 nhng 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 thOc c() n l
0Bch thOc 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" Whng / 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 hJng 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 unins 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 %$+
unin unin 1Q 4anh
struct {
char title>,0?;
char author>,0?;
union {
8loat dollars;
int Oens;
} *rice;
} -oo%;
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 lu 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