You are on page 1of 33

*sp3cts bs!cs d3 l!

ng"*g3m C

Cns!d3r*3s g3r*!s

M"!t*s l!ng"*g3ns fr*m d3s3nvlv!d*s 3 pr m"!ts *ns "t!l!z*d*s cm d!f3r3nt3s


bj3t!vs 3 c*r*ct3rst!c*s, t*!s cm: Frtr*n, Cbl, B*s!c, *lgls, P*sc*l 3 3tc. M*s
q"3 C? C nm3 d3 "m* l!ng"*g3m *t"*lm3nt3 "t!l!z*d* 3m d!f3r3nt3s r3*s 3
prps!ts. F*z p*rt3 hj3 d3 "m* l!ng"*g3m cns!d3r*d* *v*n*d*, d3s3nvlv!d* ns
l*br*tr!s B3ll ns *ns 70.

* d3f!n! frm*l d* l!ng"*g3m pd3 s3r 3ncntr*d* n l!vr Th3 C Prgr*mm!ng


L*ng"*g3 d3 Br!*n W. K3rn!gh*n 3 D3nn!s M. R!tch!3 (s p*!s d* l!ng"*g3m). Ns
*ns 80 !n!c!"-s3 "m tr*b*lh d3 cr!* d3 "m p*dr ch*m*d C *NS! (*m3r!c*n
N*t!n*l St*nd*rd!z*t!n !nst!t"t3).

"m* l!ng"*g3m d3 nv3l md!, p!s pd3-s3 tr*b*lh*r 3m "m nv3l prx!m * d*
mq"!n* " cm "m* l!ng"*g3m d3 *lt nv3l cm "tr*s 3x!st3nt3s.

Cm C pd3ms 3scr3v3r prgr*m*s cnc!ss, rg*n!z*ds 3 d3 fc!l 3nt3nd!m3nt, m*s


!nf3l!zm3nt3 * f*lt* d3 d!sc!pl!n* pd3 g3r*r prgr*m*s m*l 3scr!ts, d!fc3!s d3 s3r3m
l!ds 3 cmpr33nd!ds. N s3 d3v3 3sq"3c3r q"3 C "m* l!ng"*g3m p*r*
prgr*m*dr3s, p!s !mp3 p"c*s r3str!3s * q"3 pd3 s3r f3!t. C *m!gv3l 3
3str"t"r*d p*r* 3ncr*j*r bns hb!ts d3 prgr*m*; c*b3 * prgr*m*dr 3x3rc!t*r
3ss3s hb!ts.

* n3c3ss!d*d3 d3 3scr3v3r prgr*m*s, q"3 f**m "s d3 r3c"rss d* l!ng"*g3m d3


mq"!n* d3 "m* frm* m*!s s!mpl3s 3 prtt!l, f3z cm q"3 * pr!nc!p*l "t!l!z* d C
fss3 * r33scr!t* d s!st3m*s p3r*c!n*l "N!X. S"* !nd!c* pr!nc!p*lm3nt3 n
d3s3nvlv!m3nt d3 prgr*m*s, t*!s cm: cmp!l*dr3s, !nt3rpr3t*dr3s, 3d!tr3s d3
t3xt; b*nc d3 d*ds. Cmp"t* grf!c*, m*n!p"l* 3 prc3ss*m3nt d3 !m*g3ns,
cntrl3 d3 prc3sss,

Pr!nc!p*!s c*r*ct3rst!c*s d* l!ng"*g3m C * s3r3m pnd3r*d*s:

- Prt*b!l!d*d3
- G3r* d3 cd!gs 3x3c"tv3!s cmp*cts 3 rp!ds
- !nt3r* cm s!st3m* p3r*c!n*l
- F*c!l!d*d3 d3 "s (*tr*vs d3 *mb!3nt3s cm Brl*nd C++ 5.0)
- L!ng"*g3m 3str"t"r*d*
- Cnf!*b!l!d*d3
- S!mpl!c!d*d3
3l3m3nts bs!cs

1.1 !d3nt!f!c*dr3s

S "t!l!z*ds p*r* d*r nm3s * cnst*nt3s, v*r!v3!s, f"n3s 3 vr!s bj3ts d3f!n!ds p3l
"s"r!. *s r3gr*s p*r* frm* d3ss3s nm3s s:

1) Td !d3nt!f!c*dr d3v3 !n!c!*r pr "m* l3tr* (*..z " *..Z) " "m s"bl!nh*d
2) N pd3 cnt3r smbls 3sp3c!*!s. *ps pr!m3!r c*r*ct3r pd3 s3r "t!l!z*d: l3tr*s,
s"bl!nh*ds 3/" dg!ts.
3) "t!l!z*-s3 !d3nt!f!c*dr3s d3, n mx!m, 32 c*r*ct3r3s pr 3st3s s3r3m s!gn!f!c*t!vs.
4) N pd3 s3r p*l*vr* r3s3rv*d* 3 n3m nm3 d3 f"n3s d3 b!bl!t3c*s.

bs: l3tr*s m*!sc"l*s 3 m!nsc"l*s s tr*t*d*s d3 frm* d!f3r3nt3.

1.2 T!ps d3 d*ds bs!cs

T!p Nm3r d3 byt3s 3sc*l*


ch*r 1 -128 * 127
!nt 21 -32768 * 327671
fl*t 4 3.43-38 * 3.43+38 (+-)
d"bl3 8 1.73-308 * 1.73+308 (+-)
v!d 0 s3m v*lr

1.3 Md!f!c*dr3s

T!p Nm3r d3 byt3s 3sc*l*


"ns!gn3d ch*r 1 0 * 255
"ns!gn3d !nt 21 0 * 655351
Shrt !nt 2 -32768 * 32767
"ns!gn3d shrt !nt 2 0 * 65535
lng !nt 4 -2147483648 * 2147483647
"ns!gn3d lng !nt 4 0 * 4294967295
lng d"bl3 10 3.43-4932 * 1.13+4932

bs3rv*3s:

1) md!f!c*dr s!gn3d 3v3nt"*lm3nt3 pd3 s3r "t!l!z*d, prm s3" "s 3q"!v*l3 * "t!l!
z*r "m t!p s3m q"*lq"3r md!f!c*dr.
2) * p*l*vr* !nt pd3 s3r m!t!d*. 3x: "ns!gn3d lng !nt "ns!gn3d lng

1.4 D3cl*r* d3 v*r!v3!s

* frm* g3r*l p*r* d3cl*r* d3 "m* v*r!v3l :


1
t*m*nh d t!p !nt d3p3nd3nt3 d* pl*t*frm* sbr3 * q"*l prgr*m* cmp!l*d. P*r* * cmp!l*
n* pl*t*frm* DS p*dr (16 b!ts), "m d*d d t!p !nt c"p* d!s byt3s d3 t*m*nh
1
1
1
t!p_d*_v*r!v3l l!st*_d3_v*r!v3!s;

nd3 t!p_d*_v*r!v3l "m t!p vl!d 3m C (S33s 1.2 3 1.3) 3 l!st*_d3_v*r!v3!s pd3 s3r
"m " m*!s nm3s d3 !d3nt!f!c*dr3s s3p*r*ds pr v!rg"l*.
3x3mpls:

!nt f, !, k; /* td*s v*r!v3!s d t!p !nt */2


fl*t *, *, b; /* td*s v*r!v3!s d t!p fl*t */

1.5 Cnst*nt3s

3m C, cnst*nt3s s v*lr3s f!xs q"3 n pd3m s3r *lt3r*ds pr "m prgr*m*.

1.5.1 Cnst*nt3s 3m b*s3 d3c!m*l

1) Cnst*nt3s n"mr!c*s !nt3!r*s: pd3m s3r *tr!b"d*s * v*r!v3!s ds t!ps ch*r 3 !nt,
md!f!c*ds " n, d3p3nd3nd d v*lr d* cnst*nt3 3 d* f*!x* d3 v*lr3s *c3!t* p3l*
v*r!v3l.

3x3mpls: 345 10 0 5000000

2) Cnst*nt3s n"mr!c*s n !nt3!r*s: pd3m s3r *tr!b"d*s * v*r!v3!s ds t!ps fl*t 3


d"bl3, md!f!c*ds " n, d3p3nd3nd d v*lr d* cnst*nt3 3 d* f*!x* d3 v*lr3s *c3!
t* p3l* v*r!v3l.

3x3mpls: -56.897 1.23+5

3) Cnst*nt3s 3m frm* d3 c*r*ct3r: pd3m s3r *tr!b"d*s * v*r!v3!s d t!p ch*r, md!f!
c*d*s " n. v*lr d* cnst*nt3 !g"*l * v*lr n"mr!c d* t*b3l* *SC!! 3 d c*r*ct3r
r3pr3s3nt*d 3ntr3 (cm"m3nt3 ch*m*ds d3 pl!c*s)

1.5.2 Cnst*nt3s 3m b*s3s h3x*d3c!m*l 3 ct*l4

Cnst*nt3s 3m b*s3 h3x*d3c!m*l !n!c!*m cm 0x, * p*ss q"3 cnst*nt3s 3m b*s3 ct*l !n!c!
*m cm "m 0.

3x3mpls: 0x*B (h3x*d3c!m*l) 016 (ct*l)

1.5.3 Cnst*nt3s 3m frm* d3 s3q"nc!* d3 c*r*ct3r3s (str!ngs)

S r3pr3s3nt*d*s 3ntr3 *sp*s.

3x3mpl: 3st* "m* cnst*nt3 3m frm* d3 str!ng.


2
/* 3 */ d3l!m!t*m "m cm3ntr! t3xt"*l, q"3 n cmp!l*d m*s q"3 *"x!l!* prgr*m*dr n*
dc"m3nt* d s3" cd!g. Nt3-s3 q"3 3x!st3 "m* v3rs *lt3rn*t!v* p*r* d3l!m!t*r "m cm3ntr! *t
f!n*l d* l!nh*, "s*nd //, prm 3st* v3rs p*dr C++ 3 n d3v3 s3r "t!l!z*d* p*r* cmp!l* d3 cd!
g *NS! C (C p*dr)
3
* t*b3l* *SC!! "m* t*b3l* p*drn!z*d* q"3 r3l*c!n* "m cnj"nt d3 c*r*ct3r3s * v*lr3s n"mr!cs
3ntr3 0 3 255. Pr 3x3mpl, c*r*ct3r crr3spnd3nt3 * dg!t 9 crr3spnd3 * cd!g *SC!! 57.
4
P*r* m*!r3s !nfrm*3s sbr3 nm3rs ct*!s 3 h3x*d3c!m*!s, cns"lt*r t3xt sbr3 B*s3s N"mr!c*s
1.5.4 C*r*ct3r3s d3 cntrl3 d* l!ng"*g3m C

3st3s c*r*ct3r3s d3v3m s3r r3pr3s3nt*ds cm c*r*ct3r3s *lf*n"mr!cs (3ntr3 ) " cm


cnt3d d3 "m* str!ng

Cd!g S!gn!f!c*d
\* s!n*l *"dv3l
\b r3trc3ss d c"rsr
\f *l!m3nt* d3 frm"lr!
\n nv* l!nh*
\r r3trn d3 c*rr
\t t*b"l* hr!znt*l
\ *sp*s
\ *pstrf
\0 n"l (z3r)
\\ b*rr* !nv3rt!d*
\v t*b"l* v3rt!c*l
\* s!n*l snr
\N cnst*nt3 ct*l (nd3 N "m ct*l)
\xN cnst*nt3 h3x*d3c!m*l (nd3 N "m h3x*d3c!
m*l)

1.6 !nstr"3s

"m* !nstr" 3m l!ng"*g3m C "m* 3xpr3ss s3g"!d* d3 "m pnt 3 vrg"l*. Pd3 s3r "m* *tr!
b"!, "m* ch*m*d* d3 f"n, "m t3st3 d3 d3sv! " "m t3st3 d3 l*.

3x3mpl d3 !nstr" d3 *tr!b"!: x = 12;

nd3 s!n*l d3 !g"*l (=) p3r*dr d3 *tr!b"!. Nt3-s3 q"3 p3r*nd d l*d 3sq"3rd d
p3r*dr d3 *tr!b"! s3mpr3 "m* v*r!v3l, 3 q"3 p3r*nd d l*d d!r3!t d3v3 s3r d3 "m t!
p d3 d*d cmp*tv3l cm t!p d* v*r!v3l.

1.7 p3r*dr3s

1.7.1 p3r*dr3s *r!tmt!cs

*d! +
S"btr* -
D!v!s /
M"lt!pl!c* *
R3st %

bs3rv*3s:

1) Tds s p3r*dr3s s d3f!n!ds p*r* s t!ps !nt3!rs 3 n !nt3!rs, 3xc3t p3r*dr


r3st (%) q"3 n d3f!n!d p*r* v*r!v3!s ds t!ps n !nt3!rs.
2) P*r* q"*lq"3r t!p !nt3!r, * *d! d3 "m * m*!r nm3r d* f*!x* d*q"3l3 t!p
prd"z m3nr nm3r d* f*!x*. s 3rrs d3 3st"r n3m s3mpr3 s d3t3ct*ds, c*b3nd
* prgr*m*dr tm*r c"!d*d * d!m3ns!n*r *s v*r!v3!s d prgr*m* p*r* q"3 3l3s
n crr*m.

3x3mpl:

"ns!gn3d ch*r x;
x = 255;
x = x + 1; /* x d3v3r!* *ss"m!r 256, n 3nt*nt 3st"r* * f*!x*
3 r3trn* p*r* m3nr v*lr q"3 0 */

1.7.2 p3r*dr3s r3l*c!n*!s

M3nr q"3 <


M*!r q"3 >
M3nr " !g"*l <=
M*!r " !g"*l >=
!g"*ld*d3 ==
D3s!g"*ld*d3 !=

bs3rv*3s:

1) Td*s *s p3r*3s r3l*c!n*!s t3m cm r3s"lt*d "m !nt3!r r3pr3s3nt*nd "m v*lr
lg!c (1 = tr"3 3 0 = f*ls3).
2) N cnf"nd!r p3r*dr d3 *tr!b"! (= ) cm p3r*dr d3 !g"*ld*d3 ( = = ).

1.7.3 p3r*dr3s lg!cs

3 (cnj"n) &&
" (d!sj"n) ||
n (n3g*) !

s p3r*dr3s lg!cs pd3m r3c3b3r q"*lq"3r v*lr d3 p3r*nd, prm s v*lr3s d!f3r3nt3s d3
z3r s s3mpr3 !nt3rpr3t*ds cm tr"3 (v3rd*d3!r) 3 s !g"*!s * z3r s !nt3rpr3t*ds cm
f*ls3 (f*ls). r3s"lt*d d3 "m* p3r* lg!c* s3mpr3 "m v*lr lg!c.

T*b3l* d* v3rd*d3

p Q p && q p || q !p
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

1.7.4 p3r*dr3s d3 *tr!b"! cmb!n*ds

+= -= *= /=
3x3mpls:

* += b; /* * = * + b; */
* -= b; /* * = * b; */
* *= b; /* * = * * b; */
* /= b; /* * = * / b; */

bs3rv*3s:

1) Tds s p3r*dr3s d3 *tr!b"! *tr!b"3m r3s"lt*d d3 "m* 3xpr3ss * "m* v*r!v3l


S3 t!p d l*d 3sq"3rd n fr m3sm d l*d d!r3!t, t!p d l*d d!r3!t s3r cnv3rt!d p*r*
t!p d l*d 3sq"3rd. !st pd3 c*"s*r * p3rd* d3 pr3c!s 3m *lg"ns t!ps d3 d*ds 3 d3v3 s3r
l3v*d * sr! p3l prgr*m*dr.

1.7.5 p3r*dr3s ps-f!x*ds 3 pr-f!x*ds

p3r*dr S!gn!f!c*d
++v*r!*v3l !ncr3m3nt* * v*r!v3l *nt3s d3 "s*r s3" v*lr
V*r!v3l++ !ncr3m3nt* * v*r!v3l d3p!s d3 "s*r s3" v*lr
--v*r!*v3l d3cr3m3nt* * v*r!v3l *nt3s d3 "s*r s3" v*lr
v*r!*v3l-- d3cr3m3nt* * v*r!v3l d3p!s d3 "s*r s3" v*lr

3x3mpls:

!nt *, b, c;
* = 6;
b = ++*; /* * r3c3b3 7 3 d3p!s b t*mbm r3c3b3 7*/
c = *++; /* c r3c3b3 7 3 d3p!s * r3c3b3 8 */

1.7.6 p3r*dr3s 3m nv3l d3 b!t

D3slc*m3nt 3sq"3rd* (sh!ft l3ft) <<


D3slc*m3nt d!r3!t* (sh!ft r!ght) >>
3 (*nd) &
" (r) |
" 3xcl"s!v (xr) ^
n (nt) ~

P*r* "m* d!sc"ss m*!s *prf"nd*d* sbr3 "s d3 b!ts 3 nm3rs b!nr!s, cns"lt*r t3xt
sbr3 B*s3s N"mr!c*s

1.7.7 p3r*dr3s d3 3nd3r3

& - r3trn* 3nd3r3 d* v*r!v3l


* - r3trn* cnt3d d 3nd3r3 *rm*z3n*d 3m "m* v*r!v3l d t!p pnt3!r

P*r* s*b3r m*!s sbr3 p3r*dr3s d3 3nd3r3, cns"lt*r t3xt sbr3 Pnt3!rs.
1.7.8 "trs p3r*dr3s

s!z3f(p3r*nd) frn3c3 t*m*nh 3m byt3s d s3" p3r*nd


3x:

!nt x;
fl*t y;
ch*r c;
x= s!z3f(!nt); /* frn3c3 t*m*nh d t!p !nt (2 byt3s) */
x= s!z3f(y); /* frn3c3 t*m*nh d* v*r!v3l y (4 byt3s) */
x= s!z3f(c); /* frn3c3 t*m*nh d* v*r!v3l c (1 byt3) */

1.8 3xpr3ss3s

p3r*dr3s, cnst*nt3s, v*r!v3!s 3 f"n3s cnst!t"3m 3xpr3ss3s. *s pr!nc!p*!s r3gr*s *lgbr!


c*s s cns!d3r*d*s n*s 3xpr3ss3s. *lg"ns *sp3cts d*s 3xpr3ss3s s 3sp3cf!cs d* l!
ng"*g3m C 3 s 3xpl!c*ds * s3g"!r.

1.8.1 Cnv3rs *"tmt!c* d3 t!ps

Q"*nd cnst*nt3s, v*r!v3!s 3 f"n3s d3 t!ps d!f3r3nt3s s m!st"r*ds 3m "m* 3xpr3ss,


3l*s s td*s cnv3rt!d*s p*r* t!p d p3r*nd m*!r. !st f3!t p3r* * p3r*, d3 *crd
cm *s s3g"!nt3s r3gr*s:

1) Tds s p3r*nds ds t!ps ch*r 3 shrt !nt s cnv3rt!ds p*r* !nt. Tds s p3r*nds d t!p
fl*t s cnv3rt!ds p*r* d"bl3.
2) P*r* tds s p*r3s d3 p3r*nds 3nvlv!ds 3m "m* p3r*, s3 "m d3l3s lng d"bl3
"tr p3r*nd cnv3rt!d p*r* "m lng d"bl3. S3 "m d"bl3, "tr cnv3rt!d p*r*
d"bl3. S3 "m lng, "tr cnv3rt!d p*r* lng. S3 "m "ns!gn3d, "tr cnv3rt!d p*r*
"ns!gn3d.

3x:

fl*t x, r3s;
ch*r c;
...
r3s = x/c; /* v*lr d3 x/c cnv3rt!d p*r* "m fl*t, 3mbr*
c s3j* r!g!n*lm3nt3 "m ch*r */

1.8.2 Cnv3rs 3xplc!t* d3 t!ps (typ3 c*sts)

pssv3l fr*r "m* 3xpr3ss * s3r d3 "m t!p 3sp3cf!c, s3m n 3nt*nt m"d*r s t!ps d*s
v*r!v3!s 3nvlv!d*s n3st* 3xpr3ss. * 3ss3 t!p d3 p3r* ch*m*-s3 cnv3rs 3xplc!t* d3 t!
p, " typ3 c*st.

* frm* g3r*l d3 "m typ3 c*st :

(t!p) 3xpr3ss;

nd3 t!p "m ds t!ps d3 d*d p*dr d* l!ng"*g3m C.


*s p3r*3s d3 typ3 c*st s m"!t t3!s 3m 3xpr3ss3s n*s q"*!s *lg"m* p3r* r3s"lt* 3m
p3rd* d3 pr3c!s d3v!d * t!p d*s v*r!v3!s " cnst*nt3s 3nvlv!d*s. Pr 3x3mpl:

fl*t r3s;
!nt p1,p2;
p1 = 3;
p2 = 2;
r3s = p1 / p2; /* r3s r3c3b3 1, j q"3 p1 3 p2 s *mbs
nm3rs d t!p !nt 3 r3s"lt*d d* s"*
d!v!s t*mbm !nt */
r3s = (fl*t)p1 / p2; /* r3s r3c3b3 1.5, j q"3 typ3 c*st
fr" p3r*nd p1 * s3r "m fl*t
n3st* p3r*. r3s"lt*d d* d!v!s,
pr cns3q"nc!*, t*mbm fl*t */

1.8.3 3sp**m3nt 3 p*rnt3s3s

Pd3ms clc*r 3sp*s 3m "m* 3xpr3ss p*r* trn-l* m*!s l3gv3l. "s d3 p*rnt3s3s
r3d"nd*nt3s " *d!c!n*!s n c*"s*r 3rrs " d!m!n"!r * v3lc!d*d3 d3 3x3c" d* 3xpr3ss.
3x:

*=b/9.67-56.89*x-34.7;
* = (b / 9.67) (56.89 * x) 34.7; /* 3q"!v*l3nt3 */

3str"t"r* d3 "m prgr*m* 3m C

"m* p*rt!c"l*r!d*d3 !nt3r3ss*nt3 n prgr*m* C s3" *sp3ct md"l*r 3 f"nc!n*l, 3m q"3


prpr! prgr*m* pr!nc!p*l "m* f"n. 3st* frm* d3 *pr3s3nt* d* l!ng"*g3m f*c!l!t*
d3s3nvlv!m3nt d3 prgr*m*s, p!s p3rm!t3 3mpr3g d3 frm*s 3str"t"r*d*s 3 md"l*r3s
3ncntr*d*s 3m "tr*s l!ng"*g3ns.

* 3str"t"r* d3 "m prgr*m* 3m C pss"! s s3g"!nt3s 3l3m3nts, s3nd q"3 *q"3l3s d3l!m!t*ds
pr clch3t3s s pc!n*!s:

[ d3f!n!3s d3 pr-prc3ss*m3nt ]
[ d3f!n!3s d3 t!p ]
[ d3cl*r*3s d3 v*r!v3!s glb*!s ]
[ prtt!ps d3 f"n3s ]
[ f"n3s ]

m*!n ( )
{
/* d3f!n!3s d3 v*r!v3!s */
/* crp d* f"n pr!nc!p*l, cm d3cl*r*3s d3 s"*s v*r!v3!s,
s3"s cm*nds 3 f"n3s */
}

D3f!n!3s d3 pr-prc3ss*m3nt s cm*nds !nt3rpr3t*ds p3l cmp!l*dr, 3m t3mp d3


cmp!l*, q"3 d!z3m r3sp3!t * p3r*3s r3*l!z*d*s p3l cmp!l*dr p*r* g3r* d3 cd!g.
G3r*lm3nt3 !n!c!*m cm "m* c3rq"!lh* (#) 3 n s cm*nds d* l!ng"*g3m C, pr !ss n
s3r tr*t*ds *q"! cm m*!r3s d3t*lh3s.
3x:

#!ncl"d3 <std!.h> /* cm*nd d3 pr-prc3ss*dr, "t!l!z*d


p*r* !nd!c*r * cmp!l*dr q"3 3l3 d3v3 cl*r *s d3f!n!3s d *rq"!
v std!.h n3st3 *rq"!v *nt3s d3 cmp!l-l */

D3f!n!3s d3 t!ps s d3f!n!3s d3 3str"t"r*s " t!ps d3 d*ds 3sp3c!*!s, !ntrd"z!ds p3l
"s"r! p*r* f*c!l!t*r * m*n!p"l* d3 d*ds p3l prgr*m*. T*mbm n s3r tr*t*ds *q"! 3m
m*!r3s d3t*lh3s.

D3cl*r*3s d3 v*r!v3!s glb*!s s f3!t*s q"*nd n3c3ssr! "t!l!z*r v*r!v3!s glb*!s n


prgr*m*. cnc3!t d3 v*r!v3l glb*l 3 *s v*nt*g3ns 3 d3sv*nt*g3ns d s3" "s d!z3m r3sp3!t
md"l*r!z* d3 "m prgr*m* 3m C (cns"lt*r m*t3r!*l sbr3 md"l*r!z* 3 f"n3s).

Prtt!ps d3 f"n3s 3 f"n3s t*mbm d!z3m r3sp3!t * q"3st3s d3 md"l*r!z*.

m*!n() * f"n pr!nc!p*l d3 "m prgr*m* 3m C, cnt3nd cd!g q"3 s3r !n!c!*lm3nt3
3x3c"t*d q"*nd prgr*m* 3m s! fr 3x3c"t*d. Td prgr*m* 3m C d3v3 cnt3r * f"n m*!
n(), d cntrr! s3r g3r*d "m 3rr d"r*nt3 prc3ss d3 g3r* d prgr*m* (m*!s 3sp3c!f!
c*m3nt3, n* 3t*p* d3 l!g*).

3. F"n3s bs!c*s d3 3/S

3st* s3 d3scr3v3 *lg"m*s d*s f"n3s bs!c*s d3 3/S, q"3 s3r "t!l!z*d*s !n!c!*lm3nt3 p*r*
prv3r prgr*m*dr d3 "m c*n*l d3 3ntr*d* d3 d*ds v!* t3cl*d 3 "m c*n*l d3 s*d* d3 d*ds
v!* mn!tr.

3.1 F"n pr!ntf( ) (b!bl!t3c* std!.h)

* f"n pr!ntf( ) b*s!c*m3nt3 "t!l!z*d* p*r* 3nv!*r !nfrm*3s * mn!tr, " s3j*, !mpr!m!
r !nfrm*3s. s3" prtt!p s3g"!nt3:

pr!ntf( str!ng d3 d*ds 3 frm*t, v*r1, v*r2,..., v*rN);

nd3 str!ng d3 d*ds 3 frm*t frm*d* pr d*ds l!t3r*!s * s3r3m 3x!b!ds n mn!tr (pr
3x3mpl, "m t3xt q"*lq"3r) m*!s "m cnj"nt pc!n*l d3 3sp3c!f!c*dr3s d3 frm*t (!nd!c*ds
p3l smbl % 3 "m cnj"nt d3 c*r*ct3r3s). 3st3s 3sp3c!f!c*dr3s d3t3rm!n*r d3 q"3 frm*
cnt3d ds *rg"m3nts v*r1 * v*rN s3r 3x!b!d.

v*r1 * v*rN !nd!c*m, pr s"* v3z, s *rg"m3nts (v*r!v3!s " cnst*nt3s) c"js v*lr3s s3r 3x!
b!ds n lc*l 3 n frm*t d3t3rm!n*d p3ls 3sp3c!f!c*dr3s d3 frm*t, d3ntr d* str!ng d3
d*ds 3 frm*t. nm3r N d3v3 s3r !g"*l * nm3r d3 3sp3c!f!c*dr3s d3 frm*t frn3c!ds.

3sp3c!f!c*dr3s d3 frm*t m*!s "t!l!z*ds:

%c c*r*ct3r3s s!mpl3s (t!p ch*r)


%d !nt3!r (t!p !nt )
%3 nt* c!3ntf!c*
%f pnt fl"t"*nt3 (t!p fl*t)
%g %3 " %f (m*!s c"rt)
% ct*l
%s str!ng
%" !nt3!r s3m s!n*l
%x h3x*d3c!m*l
%lf t!p d"bl3
%" !nt3!r n s!n*l!z*d (t!p "ns!gn3d !nt)
%ld t!p lng !nt

3x3mpls:

1)
!nt n = 15;
pr!ntf( v*lr d3 n 3h %d, n);

/* 3x!b3 v*lr d3 n 3h 15. Nt3-s3 q"3 td cnt3d d*


str!ng d3 d*ds 3 frm*t 3x!b!d l!t3r*lm3nt3, cm 3xc3 d
3sp3c!f!c*dr %d, q"3 s"bst!t"d p3l v*lr 3m frm*t !nt3!
r d* v*r!v3l n */

2)
ch*r c*r*c = *;
fl*t n"m = 3.16;
pr!ntf(* l3tr* 3h %c 3 n"m3r 3h %f, c*r*c, n"m);

/* 3x!b3 * l3tr* 3h * 3 n"m3r 3h 3.16. N3st3 c*s,


3sp3c!f!c*dr %c (pr!m3!r d* str!ng) s"bst!t"d p3l v*lr
d* v*r!v3l c*r*c 3 3sp3c!f!c*dr %f s"bst!t"d p3l v*lr
d* v*r!v3l n"m. Nt3-s3 q"3 s t!ps ds 3sp3c!f!c*dr3s 3 d*s
v*r!v3!s s cmp*tv3!s */

3.2 F"n sc*nf() (b!bl!t3c* std!.h)

* f"n sc*nf "t!l!z*d* p*r* r3c3b3r d*ds d3 "m* 3ntr*d* d3 d*ds p*dr. Cns!d3r*r3ms,
p*r* f!ns d3 s!mpl!f!c*, q"3 3ss* 3ntr*d* p*dr s3mpr3 t3cl*d. prtt!p d3 sc*nf
s3g"!nt3:

sc*nf (str!ng d3 frm*t, &v*r1, &v*r2, , &v*rN);

nd3 * str!ng d3 frm*t cntm s 3sp3c!f!c*dr3s d3 frm*t n* s3q"nc!* 3 r3l*t!vs * c*d*


"m ds d*ds q"3 s3 pr3t3nd3 r3c3b3r. P*r* "m* l!st* ds 3sp3c!f!c*dr3s d3 frm*t m*!s "t!l!
z*ds, v3r s3 3.1.

v*r1 * v*rN !d3nt!f!c*m *s v*r!v3!s n*s q"*!s s3r *rm*z3n*ds s v*lr3s r3c3b!ds pr
sc*nf, n* m3sm* rd3m d3t3rm!n*d* p3ls 3sp3c!f!c*dr3s d3 frm*t. nm3r N d3v3 s3r !
g"*l * nm3r d3 3sp3c!f!c*dr3s d3 frm*t frn3c!ds.

!MPRT*NT3: p3r*dr d3 3nd3r3 (&) D3V3 br!g*tr!*m3nt3 s3r "t!l!z*d d!*nt3 ds !d3nt!
f!c*dr3s d*s v*r!v3!s, d cntrr! crr3 "m 3rr. P*r* m*!r3s d3t*lh3s, cns"lt*r * t3r!*
sbr3 pnt3!rs.

3x3mpls:

1)
!nt t;
pr!ntf(D!g!t3 "m !nt3!r: );
sc*nf(%d, &t); /* *g"*rd* * d!g!t* d3 "m nm3r d t!p
!nt. nm3r d!g!t*d *rm*z3n*d n*
v*r!v3l t q"*nd "s"r! d!g!t* 3NT3R */

2)

ch*r c*r*c1;
!nt !;
pr!ntf(D!g!t3 "m c*r*ct3r 3 "m !nt, s3p*r*ds pr vrg"l*: );
sc*nf(%c, %d, &c*r*c1, &!);

/* n3st3 c*s, s 3sp3c!f!c*dr3s d3 frm*t %c 3 %d 3st


s3p*r*ds pr vrg"l*, q"3 s!gn!f!c* q"3 "s"r! d3v3 d!g!
t*r s v*lr3s t*mbm s3p*r*ds pr vrg"l* 3 n* rd3m crr3t* */

3.3 F"n g3tch() (b!bl!t3c* cn!.h)

* f"n g3tch "t!l!z*d*, b*s!c*m3nt3, p*r* 3sp3r*r pr3ss!n*m3nt d3 "m* t3cl* p3l "s"r!
. * t3cl* pr3ss!n*d* pd3 s3r c*pt"r*d* *tr*vs d v*lr d3 r3trn d* f"n (p*r* m*!r3s
d3t*lh3s sbr3 v*lr d3 r3trn, cns"lt*r * t3r!* sbr3 f"n3s).

P3l f*t d3 !nt3rrmp3r * 3x3c" *t pr3ss!n*m3nt d3 "m* t3cl*, * f"n g3tch pd3 s3r
"t!l!z*d* n f!n*l d3 "m prgr*m* d3 cnsl3 p*r* p3rm!t!r q"3 "s"r! v!s"*l!z3 r3s"lt*d d
prgr*m* *nt3s q"3 * s"* j*n3l* s3 f3ch3.

3x3mpl:

pr!ntf(3st" mstr*nd "m* fr*s3\n);


pr!ntf(D!g!t3 q"*lq"3r t3cl* p*r* s*!r d prgr*m*);
g3tch(); /* *g"*rd* *q"! *t "m* t3cl* s3r pr3ss!n*d* */

/* f!m d prgr*m* */

bs3rv*: * f"n g3tch3 f"nc!n* d3 frm* s3m3lh*nt3, prm 3x!b3 n* t3l* c*r*ct3r d!g!
t*d ( nm3 s!gn!f!c* g3t ch*r w!th 3ch).

3.4 F"n clrscr() (b!bl!t3c* cn!.h)

* f"n clrscr "t!l!z*d* p*r* l!mp*r * t3l* ( nm3 s!gn!f!c* cl3*r scr33n).

3str"t"r*s d3 cntrl3

Cm*nd s!mpl3s

"m* l!nh* d3 cm*nd 3m C s3mpr3 t3rm!n* cm "m pnt 3 vrg"l* (;)

3x3mpls:

x = 443.7;
* = b + c;
pr!ntf(3x3mpl);

4.2 Blc d3 cm*nds

"t!l!z*-s3 ch*v3s ( { } ) p*r* d3l!m!t*r blcs d3 cm*nd 3m "m prgr*m* 3m C. 3st3s s m*!s
"t!l!z*ds n *gr"p*m3nt d3 !nstr"3s p*r* 3x3c" p3l*s cl"s"l*s d*s 3str"t"r*s cnd!c!n*!
s 3 d3 r3p3t!.

4.3 3str"t"r*s cnd!c!n*!s

4.3.1 3str"t"r* !f-3ls3

Frm*t:

!f ( cnd! )
{
blc d3 cm*nds 1
}
3ls3
{
blc d3 cm*nds 2
}

cnd! q"*lq"3r 3xpr3ss q"3 pss* s3r *v*l!*d* cm v*lr v3rd*d3!r (tr"3) " f*ls
(f*ls3). N c*s d3 3xpr3ss3s q"3 pss"*m "m v*lr nm3r!c * !nvs d3 "m v*lr lg!c, s3
v*lr d!f3r3nt3 d3 z3r * 3xpr3ss *v*l!*d* cm v*lr lg!c tr"3, d cntrr! *v*l!*d*
cm v*lr lg!c f*ls3.

C*s * cnd! pss"* "m v*lr lg!c tr"3, blc d3 cm*nds 1 3x3c"t*d. S3 v*lr lg!c
d* cnd! fr f*ls3, blc d3 cm*nds 2 3x3c"t*d. P*r* q"*lq"3r "m ds blcs, s3 3st3 fr
frm*d pr "m n!c cm*nd *s ch*v3s s pc!n*!s.

* 3str"t"r* !f-3ls3 s3m3lh*nt3 * "m* 3str"t"r* cnd!c!n*l cmpst*, 3m q"3 "m " "tr blc d3
cm*nds 3x3c"t*d; * cl"s"l* 3ls3, n 3nt*nt, pc!n*l, 3 s3 fr m!t!d* * 3str"t"r* p*ss* *
f"nc!n*r cm "m* 3str"t"r* cnd!c!n*l s!mpl3s, 3m q"3 "m blc d3 cm*nds (n c*s, blc
1) sm3nt3 3x3c"t*d s3 * cnd! fr v3rd*d3!r*.

3x3mpls:

1)
!nt n"m;
pr!ntf(D!g!t3 "m n"m3r: );
sc*nf(%d, &n"m);

!f (n"m < 0) /*t3st* s3 n"m m3nr q"3 z3r */


{
/* blc d3 cm*nds 3x3c"t*d s3 * cnd! v3rd*d3!r*.
N3st3 c*s, cm pr!ntf "m n!c cm*nd *s ch*v3s
pd3r!*m s3r m!t!d*s */

pr!ntf(\n nm3r m3nr q"3 z3r);


}
3ls3
{
/* blc d3 cm*nds 3x3c"t*d s3 * cnd! f*ls*.
N3st3 c*s, cm pr!ntf "m n!c cm*nd *s ch*v3s
pd3r!*m s3r m!t!d*s */

pr!ntf(\n nm3r m*!r q"3 z3r);


}

2)

!f ((* == 2) && (b == 5)) /* cnd! cm p3r* lg!c* */


pr!ntf(\nCnd! s*t!sf3!t*); /* blc d3 cm*nds */

g3tch(); /* 3st* !nstr" n f*z p*rt3 d* 3str"t"r*


cnd!c!n*l, lg s3mpr3 3x3c"t*d* */

3)

!f (m == 3)
{
!f ((* >=1) && (* <= 31)) /* 3st3 !f f*z p*rt3 d blc
d3 cm*nds d !f *nt3r!r */
{
pr!ntf(D*t* K);
}
3ls3 /* 3st3 3ls3 d !f m*!s prx!m (q"3 f*z
p*rt3 d blc d3 cm*nds) */
{
pr!ntf(D*t* !nvl!d*);
}
}

4.3.2 3str"t"r* sw!tch

Frm*t:

sw!tch (3xpr3ss)
{
c*s3 v*lr1:
s3q. d3 cm*nds 1
br3*k;
c*s3 v*lr2:
s3q. d3 cm*nds 2
br3*k;
...
c*s3 v*lrN:
s3q. d3 cm*nds N
br3*k;
d3f*"lt:
s3q. p*dr
}
cm*nd sw!tch *v*l!* 3xpr3ss 3 cmp*r* s"c3ss!v*m3nt3 cm "m* l!st* d3 cnst*nt3s
v*lr1 * v*lrN (m3ns cnst*nt3s str!ngs). Q"*nd 3ncntr* "m* crr3spndnc!* 3ntr3 v*lr
d* 3xpr3ss 3 v*lr d* cnst*nt3, s*lt* p*r* * cl"s"l* c*s3 crr3spnd3nt3 3 3x3c"t* *
s3q"nc!* d3 cm*nds *ssc!*d* *t 3ncntr*r "m cm*nd br3*k, s*!nd 3m s3g"!d* d*
3str"t"r*.

* cl"s"l* d3f*"lt 3x3c"t*d* s3 n3nh"m* crr3spndnc!* fr 3ncntr*d*. 3st* cl"s"l* pc!


n*l 3, s3 n 3st!v3r pr3s3nt3, n3nh"m* * s3r r3*l!z*d* s3 td*s *s crr3spndnc!*s
f*lh*r3m. "s*d* nrm*lm3nt3 p*r* d!r3c!n*r q"*lq"3r f!n*l l!vr3 q"3 pss* f!c*r p3nd3nt3
n* d3cl*r* sw!tch.

BS3RV*3S:
- s3 cm*nd br3*k fr 3sq"3c!d * f!n*l d3 "m* s3q"nc!* d3 cm*nds, *
3x3c" cnt!n"*r p3l* prx!m* d3cl*r* c*s3 *t q"3 "m br3*k " f!n*l
d sw!tch s3j* 3ncntr*d, q"3 nrm*lm3nt3 !nd3s3j*d.
- n"nc* d"*s cnst*nt3s c*s3 n m3sm sw!tch pd3m t3r v*lr3s !g"*!s.
- "m* d3cl*r* sw!tch m*!s 3f!c!3nt3 d q"3 "m 3nc*d3*m3nt d3 !f-3ls3,
*lm d q"3 pd3 s3r 3scr!t d3 frm* m"!t m*!s 3l3g*nt3.
- v*lr1 * v*lrN D3V3M s3r v*lr3s cnst*nt3s.

3x3mpls:

1)
!nt d!*;
pr!ntf(D!g!t3 "m d!* d* s3m*n*, d3 1 * 7);
sc*nf(%d, &d!*);
sw!tch(d!*) /* t3st* v*lr d* v*r!v3l d!* */
{
c*s3 1:
pr!ntf(Dm!ng);
br3*k;
c*s3 2:
pr!ntf(S3g"nd*);
br3*k;
c*s3 3:
pr!ntf(T3r*);
br3*k;
c*s3 4:
pr!ntf(Q"*rt*);
br3*k;
c*s3 5:
pr!ntf(Q"!nt*);
br3*k;
c*s3 6:
pr!ntf(S3xt*);
br3*k;
c*s3 7:
pr!ntf(Sb*d);
br3*k;
d3f*"lt:
pr!ntf(3st3 d!* n 3x!st3); /* s 3ntr* *q"! s3
"s"r! n d!g!t*r "m d!* 3ntr3 1 3 7 */
br3*k;
}
4.4 3str"t"r*s d3 r3p3t!

4.4.1 3str"t"r* wh!l3

Frm*t:

wh!l3 (cnd!)
{
s3q"nc!* d3 cm*nds
}

cm*nd wh!l3 *v*l!* v*lr lg!c d3 cnd!; s3 v*lr lg!c fr v3rd*d3!r (tr"3) *
s3q"nc!* d3 cm*nds 3x3c"t*d*, c*s cntrr! * 3x3c" d prgr*m* cnt!n"* *ps *
3str"t"r* wh!l3. C*s * s3q"nc!* d3 cm*nds s3j* frm*d* pr "m n!c cm*nd, "s d*s
ch*v3s pc!n*l.

*ps * 3x3c" d* s3q"nc!* d3 cm*nds, v*lr lg!c d3 cnd! r3*v*l!*d, 3 s3 cnt!


n"*r s3nd v3rd*d3!r (tr"3) * s3q"nc!* d3 cm*nds 3x3c"t*d* nv*m3nt3. 3st3
cmprt*m3nt s3 r3p3t3 *t q"3 v*lr lg!c d* cnd! s3j* f*ls (f*ls3), q"*nd * 3x3c"
d* 3str"t"r* wh!l3 !nt3rrmp!d* 3 cnt!n"* n* !nstr" s3g"!nt3.

C*d* "m* d*s 3x3c"3s d* s3q"nc!* d3 cm*nds ch*m*d* d3 !t3r* d l*. N c*s d*
3str"t"r* wh!l3 nm3r d3 !t3r*3s pd3 v*r!*r d3 0 *t N, s3nd N nm3r d* !t3r* *ps
* q"*l t3st3 d* cnd! r3s"lt* 3m "m v*lr lg!c f*ls.

BS3RV*: c*s * cnd! s3j* v3rd*d3!r* n pr!m3!r t3st3 3 * s3q"nc!* d3 cm*nds s3j*
3x3c"t*d*, n3c3ssr! q"3 3st* trn3 * cnd! f*ls* 3m *lg"m mm3nt; d cntrr!, * cnd!
s3mpr3 s3r r3*v*l!*d* cm v3rd*d3!r* 3 * s3q"nc!* d3 cm*nds s3r 3x3c"t*d* 3m "m
nm3r !nf!n!t d3 !t3r*3s5.

3x3mpl:

!nt x = 0;

/* !mpr!m3 s v*lr3s d3 x d3 0 *t 9
v*lr 10 n !mpr3ss prq"3, * t3st*r * cnd! p*r*
x !g"*l * 10, v*lr lg!c f*ls 3 * 3x3c" d wh!l3
!nt3rrmp!d* */

wh!l3 (x < 10)


{
pr!ntf(\nx = %d, x);
x++; /* f*z * cnd! trn*r-s3 f*ls*
3m *lg"m mm3nt */
}

4.4.2 3str"t"r* d wh!l3

Frm*t:

d {
5
3st*ms cns!d3r*nd prgr*m*s 3x3c"t*ds l!n3*rm3nt3, " s3j*, s3m * crrnc!* d3 3v3nts
*ssncrns (p. 3x., !nt3rr"p3s).
s3q"nc!* d3 cm*nds

} wh!l3 (cnd!);

* s3q"nc!* d3 cm*nds s3mpr3 3x3c"t*d* !n!c!*lm3nt3 3m "m* 3str"t"r* d-wh!l3. *ps *


s"* 3x3c", v*lr lg!c d* cnd! *v*l!*d, 3 s3 fr v3rd*d3!r (tr"3) * s3q"nc!* d3
cm*nds 3x3c"t*d* nv*m3nt3. c!cl s3 r3p3t3 *t q"3 v*lr lg!c d* cnd! s3j* f*ls
(f*ls3), q"*nd * 3x3c" cnt!n"* n* !nstr" s3g"!nt3 3str"t"r* d-wh!l3. C*s * s3q"nc!*
d3 cm*nds s3j* frm*d* pr "m n!c cm*nd, "s d*s ch*v3s pc!n*l.

D!f3r3nt3m3nt3 d q"3 crr3 n* 3str"t"r* wh!l3, n* 3str"t"r* d-wh!l3 nm3r d3 !t3r*3s


v*r!* 3ntr3 1 3 N, nd3 N nm3r d* !t3r* *ps * q"*l t3st3 d* cnd! r3s"lt* 3m "m
v*lr lg!c f*ls.

BS3RV*: *ss!m cm n* 3str"t"r* wh!l3, c*s * cnd! s3j* v3rd*d3!r* n pr!m3!r t3st3
n3c3ssr! q"3 * s3q"nc!* d3 cm*nds trn3 * cnd! f*ls* 3m *lg"m mm3nt.

3x3mpl:

!nt n"m;

d {

pr!ntf(D!g!t3 "m nm3r d3 1 * 9: )


sc*nf(%d, &n"m);

} wh!l3 (!((n"m >=1) && (n"m <=9))); /* n3ss3 c*s, * bt3n


d v*lr d3 n"m v!*
sc*nf pd3 trn*r * cnd! f*ls* */

4.4.3 3str"t"r* fr

Frm*t:

fr (!n!c!*l!z*; cnd!; !ncr3m3nt)


{
s3q"nc!* d3 cm*nds
}

* !n!c!*l!z* 3x3c"t*d* "m* n!c* v3z, n !nc! d* 3x3c" d* 3str"t"r* fr, 3 nrm*lm3nt3
"m* *tr!b"! "t!l!z*d* p*r* !n!c!*l!z*r *lg"m* v*r!v3l d3 cntrl3 d l*.

*ps * !n!c!*l!z*, v*lr lg!c d* cnd! t3st*d. S3 fr v3rd*d3!r (tr"3), * s3q"nc!*


d3 cm*nds 3x3c"t*d*, d cntrr! * 3x3c" cnt!n"* *ps * 3str"t"r* fr. * f!n*l d*
3x3c" d* s3q"nc!* d3 cm*nds, cm*nd crr3spnd3nt3 * !ncr3m3nt 3x3c"t*d, 3 *
cnd! vlt* * s3r t3st*d*. c!cl s3 r3p3t3 *t q"3 t3st3 d* cnd! r3s"lt3 3m "m v*lr lg!
c f*ls (f*ls3), q"*nd 3nt * 3x3c" prss3g"3 *ps * 3str"t"r* fr. C*s * s3q"nc!* d3
cm*nds s3j* frm*d* pr "m n!c cm*nd, "s d*s ch*v3s pc!n*l.

* 3str"t"r* fr 3q"!v*l3nt3 * "m* 3str"t"r* wh!l3 cm s3g"!nt3 frm*t:

!n!c!*l!z*
wh!l3 (cnd!)
{
s3q"nc!* d3 cm*nds
!ncr3m3nt
}

BS3RV*3S:
- Q"*lq"3r "m* d*s cl"s"l*s d c*b3*lh (!n!c!*l!z*, cnd! " !
ncr3m3nt) pd3 s3r m!t!d*; n c*s d* m!ss d* !n!c!*l!z* " d !
ncr3m3nt cns!d3r*-s3 q"3 3st3s s cm*nds n"ls (" s3j*, n 3x3c"t*m
n*d*), j n* m!ss d* cnd! cns!d3r*-s3 q"3 s3" v*lr lg!c s3mpr3
v3rd*d3!r. s s!n*!s d3 pnt-3-vrg"l* q"3 s3p*r*m c*d* "m* d*s cl"s"l*s
n pd3m s3r m!t!ds.
- *s cl"s"l*s d3 !n!c!*l!z* 3 !ncr3m3nt pd3m s3 cnst!t"!r d3 vr!s
cm*nds c*d* "m*; n3ss3 c*s, s cm*nds d3v3m s3r s3p*r*ds 3ntr3 s! pr
vrg"l*s.

3x3mpls:

1)
/* n3st3 c*s, x "s*d cm v*r!v3l d3 cntrl3 d l*
(cntrl* * 3x3c" 3ntr3 1 3 100) 3 t*mbm t3m s3" v*lr
!mpr3ss p3l* f"n pr!ntf */

fr (x = 1; x <= 100; x++)


{
pr!ntf(%d, x);
}

2)
/* n3st3 c*s * s3q"nc!* d3 cm*nds n"l*, 3 l*
"t!l!z*d sm3nt3 p*r* g*st*r t3mp cnt*nd d3 0 * 999 */

fr (x = 0; x< 1000; x++);

3)
/* n h !ncr3m3nt, 3 l* 3x3c"t*d *t q"3 v*lr
d!g!t*d p3l "s"r! s3j* 10 */

fr (x = 0; x != 10;)
sc*nf(%d, &x);

4)
/* d"*s v*r!v3!s s !n!c!*l!z*d*s, t3st*d*s 3 !ncr3m3nt*d*s */

fr (x = 0, y = 0; x + y < 100; x++, y++)


pr!ntf(%d, x + y);

4.5 Cm*nds d3 !nt3rr"p


4.5.1 Cm*nd br3*k

cm*nd br3*k pd3 s3r "t!l!z*d p*r* !nt3rrmp3r * 3x3c" d3 "m l* * q"*lq"3r mm3nt.
Sm3nt3 l* m*!s !nt3rn !nt3rrmp!d, 3 * 3x3c" cnt!n"* n cm*nd s3g"!nt3 * 3ss3
l*.

3x3mpl:

#!ncl"d3 <stdl!b.h> /* r3q"3r!d* p*r* "s*r r*nd() */


#!ncl"d3 <std!.h>

v!d m*!n(v!d)
{

!nt srt3! = r*nd(); /* g3r* "m nm3r *l3*tr!


3ntr3 0 3 32767 */
!nt n"m, x;
fr (x = 0; x<10; x++)
{
pr!ntf(T3nt3 *c3rt*r nm3r (3ntr3 0 3 32767).);
pr!ntf(Vc t3m %d t3nt*t!v*s., 10 x);
sc*nf(%d, &n"m);
!f (n"m == srt3!) /* s3 *c3rt" nm3r */
{
br3*k; /* !nt3rrmp3 l* (n s
n3c3ssr!*s m*!s t3nt*t!v*s) */
}
}

/* s3 x !g"*l * 10, "s"r! 3sgt" s"*s t3nt*t!v*s


s3m bt3r s"c3ss */

!f (x < 10)
{
pr!ntf(M"!t b3m!);
}
3ls3
{
pr!ntf(L*m3ntv3l!);
}
}

4.5.2 Cm*nd cnt!n"3

cm*nd cnt!n"3 t3m f"nc!n*m3nt s3m3lh*nt3 * br3*k, cm * d!f3r3n* d3 q"3 sm3nt3 * !


t3r* crr3nt3 !nt3rrmp!d*; " s3j*, * 3x3c" d l* cnt!n"* * p*rt!r d !nc! d* prx!m*
!t3r*.

3x3mpl:

/* !mpr!m3 s nm3rs p*r3s

fr (x = 0; x < 100; x++)


{
/* s3 nm3r n p*r, p*ss* p*r* * prx!m* !t3r*
s3m !mpr!m!r */

!f (x % 2 != 0)
cnt!n"3;

pr!ntf(%d, , x);
}

Md"l*r!z* 3m C

F"n3s

3m C n 3x!st3 "m* d!st!n 3ntr3 f"n3s 3 s"brt!n*s. " s3j*, td*s *s s"brt!n*s, d pnt d3
v!st* d3 *lgr!tms, pd3m s3r tr*t*d*s cm f"n3s q"3 n r3trn*m n3nh"m v*lr.

Frm*t d3 d3cl*r* d3 f"n3s :

T!p d3 r3trn !d3nt!f!c*dr_d*_f"n (t!p1 p*r*m1, t!p2


p*r*m2,..., t!pN p*r*mN)
{

/* crp d* f"n */

r3t"rn v*lr d3 r3trn;

} /* f!m d* f"n */

T!p d3 r3trn 3sp3c!f!c* t!p d v*lr q"3 s3r r3trn*d p*r* q"3m ch*m" * f"n. Q"*nd
t!p d3 r3trn fr v!d !st s!gn!f!c* q"3 s3 tr*t* d3 "m* f"n q"3 s3 cmprt* cm "m* s"brt!
n*; " s3j*, * f"n n n3c3ss!t* r3trn*r n3nh"m v*lr, *p3n*s s3r ch*m*d*.

3x3mpls d3 t!ps d3 r3trn ns c*b3*lhs d*s f"n3s:

!nt f"nc1(...) /* r3trn* "m v*lr !nt3!r */


v!d f"nc2(...) /* n r3trn* n3nh"m v*lr. Cmprt*-s3 cm
s"brt!n* */

cm*nd r3t"rn "t!l!z*d p*r* r3*l!z*r r3trn d* f"n; 3st3 pd3 s3r "t!l!z*d 3m
q"*lq"3r pnt d* f"n q"3 s3 d3s3j3 f!n*l!z*r * s"* 3x3c" 3 r3trn*r v*lr (s3 * f"n
r3trn*r *lg"m v*lr) p*r* q"3m * ch*m".

V*lr d3 r3trn v*lr * s3r 3f3t!v*m3nt3 r3trn*d 3 pd3 s3r t*nt "m* v*r!v3l cm "m*
cnst*nt3; ns c*ss 3m q"3 * f"n n r3trn* n3nh"m v*lr cm*nd r3t"rn d3v3 s3r "t!l!
z*d sz!nh " pd3-s3 s!mpl3sm3nt3 m!t-l, q"3 f*r cm q"3 * f"n r3trn3 *"tm*t!
c*m3nt3 * s3" f!n*l.

3x3mpls d3 "s d3 r3t"rn:

r3t"rn 0; /* r3trn* v*lr cnst*nt3 0 */


r3t"rn v*r; /* r3trn* v*lr d* v*r!v3l v*r */
r3t"rn; /* n r3trn* v*lr. "s*d p*r* f"n3s cm
r3trn d t!p v!d */
s p*rm3trs p*r*m1 * p*r*mN !d3nt!f!c*m s p*rm3trs q"3 s3 d3s3j* p*ss*r p*r* * f"n.
C*d* "m d3st3s p*rm3trs p*ss* * s3r "m* v*r!v3l lc*l d* f"n d3 t!p t!p1 * t!pN 3 !n!
c!*l!z*d cm v*lr q"3 f! p*ss*d p*r* s! n mm3nt d* ch*m*d* d* f"n. F"n3s q"3 n
r3c3b3m n3nh"m v*lr cm p*rm3tr d3v3m s3r d3cl*r*d*s cm * p*l*vr* v!d 3ntr3 s
p*rnt3s3s.

3x3mpls d3 d3cl*r*3s d3 p*rm3trs n c*b3*lh d*s f"n3s:

/* d!s p*rm3trs, "m !nt 3 "m ch*r. ... s3 r3f3r3 * "m t!p
d3 r3trn q"*lq"3r */
... F"nc1(!nt v*r, ch*r v*r2)
{
}
... F"nc2 (v!d) /* n r3c3b3 n3nh"m p*rm3tr */
{
}

3x3mpl d3 f"n 3 prgr*m* 3m C q"3 * ch*m*:

!nt f"nc1 (ch*r c*r*c, !nt !nt3!r, fl*t fl"t"*nt3) /* d3cl*r*c d*


f"n */
{
/* pd3-s3 d3cl*r*r "tr*s v*r!v3!s *q"! d3ntr, cm 3m "m
tr3ch nrm*l d3 prgr*m* 3st*s v*r!v3!s s lc*!s d* f"n */
!nt "tr*;

/* "s d*s v*r!v3!s r3c3b!d*s cm p*rm3tr */


pr!ntf(%c, c*r*c); pr!ntf(%f, fl"t"*nt3);
sc*nf(%d, &"tr*);

pr!ntf(%d, !nt3!r + "tr*);

r3t"rn "tr*; /* r3trn* v*lr d* v*r!v3l "tr* */

} /* f!m d* f"n */

v!d m*!n (v!d) /* prgr*m* pr!nc!p*l */


{
ch*r c1;
fl*t f;
!nt r3s"lt*d;
!nt !nt3!r;
/*3st* v*r!v3l !nt3!r 3x!st3 n 3scp d* f"n m*!n,
lg n t3m n*d* * v3r cm * v*r!v3l !nt3!r q"3 cr!*d* n*
f"n f"nc1 n mm3nt d* p*ss*g3m ds p*rm3trs */

/* l "m nm3r !nt3!r, "m c*r*ct3r 3 "m fl*t */


sc*nf(%d, %c, %f, &!nt3!r, &c1, &f);

/* ch*m* * f"n f"nc1 cm s p*rm3trs n* rd3m crr3t* */


r3s"lt*d = f"nc1(c1, !nt3!r, f);
pr!ntf(%d, r3s"lt*d); /* !mpr!m3 r3s"lt*d d* f"n */
}

bs3rv*3s:

- m*!n () t*mbm "m* f"n, prm 3sp3c!*l j q"3 3l* r3pr3s3nt* pnt d3 p*rt!d*
p*r* q"*lq"3r prgr*m* 3m C;
- r3s"lt*d d* f"n f"nc1, n 3x3mpl *c!m*, n pr3c!s* n3c3ss*r!*m3nt3 s3r *tr!
b"d * "m* v*r!v3l (n c*s, r3s"lt*d); s3 !st n *cnt3c3r v*lr d3 r3trn d*
f"n s!mpl3sm3nt3 s3r p3rd!d. Prm, cm * f"n f! f3!t* p*r* r3trn*r "m v*lr
!nt3!r !st d3v3 s3r 3v!t*d, prq"3 cnst!t"!-s3 3m "m* m 3str"t"r* 3 "s d*
f"n;
- Td*s *s v*r!v3!s d3cl*r*d*s d3ntr d crp d3 "m* f"n s lc*!s * 3l*, " s3j*,
s 3x!st3m 3nq"*nt * f"n 3st s3nd 3x3c"t*d*.

Td*s *s f"n3s d3v3m s3r cnh3c!d*s n lc*l nd3 fr3m "t!l!z*d*s, " s3j*, * s"*
d3cl*r* d3v3 v!r *nt3s d "s. C*s n s3 d3s3j3 !mpl3m3nt*r * f"n *nt3s d lc*l nd3
3l* v*! s3r "t!l!z*d* pd3-s3 3scr3v3r "m prtt!p d* s3g"!nt3 frm*:

T!p d3 r3trn !d3nt!f!c*dr_d*_f"n (t!p1 p*r*m1, t!p2


p*r*m2,..., t!pN p*r*mN);

prtt!p d3v3 s3r clc*d *nt3s d* ch*m*d* d* f"n, s!n*l!z*nd 3nt * cmp!l*dr q"3
*q"3l* f"n 3x!st3 3 v*! s3r !mpl3m3nt*d* *d!*nt3. N nss 3x3mpl, s3 q"!sss3ms
3scr3v3r * f"n f"nc1 d3p!s d* f"n m*!n d3v3r*ms !ncl"!r "m prtt!p d3 f"nc1
*nt3s d3l*.

C"!D*D!! prtt!p n 3x*t*m3nt3 !g"*l * c*b3*lh d* f"n, 3l3 pss"! "m pnt-3-
vrg"l* * m*!s n f!n*l!

V*r!v3!s glb*!s

3m C cns!d3r*-s3 cm v*r!v3l glb*l td*s *q"3l*s v*r!v3!s d3cl*r*d*s fr* d 3scp d3


q"*lq"3r f"n (!ncl"s!v3 d* f"n m*!n). Q"*lq"3r v*r!v3l s cnh3c!d* *ps * s"*
d3cl*r*, lg cst"m*-s3 d3cl*r*r td*s *s v*r!v3!s glb*!s n !nc! d prgr*m*, *nt3s d* !
mpl3m3nt* d*s f"n3s q"3 * "t!l!z*m.

3x3mpl d3 d3cl*r* 3 "s d3 v*r!v3!s glb*!s:

!nt c;
ch*r t;

/* f"n q"3 r3trn* "m v*lr !nt3!r 3 n r3c3b3 p*rm3tr */


!nt f"nc1 (v!d)
{
/* 3x!st3 "m* v*r!v3l t q"3 glb*l, prm 3st* f"nc!n* cm
"m* v*r!v3l lc*l */
!nt t;
/* c glb*l, lg pd3 s3r "t!l!z*d* d3ntr d* f"n f"nc1
*/
!f (c!=0)
{
c++;
t = c*2;
/* n3st3 c*s v*lr d3 t r3trn*d d* v*r!v3l lc*l,
j q"3 d3f!n!3s lc*!s sbr3p3m-s3 * d3f!n!3s glb*!s ns
3scps nd3 3x!st3m */
r3t"rn t;
}
3ls3 r3t"rn 0;

v!d m*!n(v!d)
{
!nt r3trn;
pr!ntf(3ntr3 cm "m c*r*ct3r:);
sc*nf(%c, &t);
pr!ntf(3ntr3 cm "m !nt3!r:);
sc*nf(%d, &c); /**s v*r!v3!s t 3 c pd3m s3r "s*d*s
*q"! prq"3 s glb*!s */

r3trn = f"nc1(); /* ch*m* * f"n f"nc1 3 r3trn* v*lr


n* v*r!v3l r3trn */

pr!ntf(\nR3s"lt*d: %d, r3trn);

P*ss*g3m d3 p*rm3trs pr v*lr

N* p*ss*g3m pr v*lr, "m* cp!* d v*lr d *rg"m3nt *rm*z3n*d n p*rm3tr d* f"n


ch*m*d*. Q"*lq"3r *lt3r* d3st3 p*rm3tr n s3 r3fl3t3 n v*lr r!g!n*l d *rg"m3nt.

"m* *lt3rn*t!v* p*r* * p*ss*g3m d3 p*rm3tr d3 v*lr, q"3 * p*ss*g3m d3 p*rm3trs pr


r3f3rnc!* "t!l!z*nd pnt3!rs, p3rm!t!r!* q"3 * f"n *lt3r*ss3 v*lr d p*rm3tr d3 frm*
q"3 3st* *lt3r* s3 r3fl3t!ss3 n v*lr r!g!n*l d *rg"m3nt. 3st3 t!p d3 p*ss*g3m d3
p*rm3trs s3r m3lhr 3st"d*d n c*pt"l sbr3 Pnt3!rs.

F"n3s cm l!st* v*r!v3l d3 p*rm3trs

3m C pssv3l d3cl*r*r f"n3s c"j* q"*nt!d*d3 d3 p*rm3trs n d3f!n!d*. C*b3 3nt


f"n, pr m3! d "s d3 f"n3s 3sp3cf!c*s d3 b!bl!t3c* d3 C, bt3r c*d* "m ds p*rm3trs
r3c3b!ds 3 cnv3rt-l p*r* t!p d3s3j*d.

* b!bl!t3c* cstd*rg prv *lg"ns t!ps d3 d*ds 3 f"n3s "t!l!z*d*s p*r* * bt3n ds
p*rm3trs d3 "m* l!st*:

v*_l!st t!p d3 l!st* d3 p*rm3trs v*r!v3!s, "t!l!z*d p*r* d3cl*r*r "m* 3str"t"r* (v3r
c*pt"l sbr3 3str"t"r*s d3 d*ds) q"3 cntm s p*rm3trs v*r!v3!s r3c3b!ds.

v!d v*_st*rt(v*_l!st l!st*, "lt!m) m*cr "t!l!z*d* p*r* !n!c!*l!z*r * l!st* d3 p*rm3trs d t!p
v*_l!st. "lt!m !d3nt!f!c*dr d lt!m p*rm3tr d!r3!t* q"3 n p3rt3nc3 l!st* v*r!v3l d3
p*rm3trs.

t!p v*_*rg(v*_l!st l!st*, t!p) p3rm!t3, * p*rt!r d* l!st* d t!p v*_l!st, bt3r v*lr d3 t!p t!p
d prx!m *rg"m3nt d* l!st*.
v!d v*_3nd(v*_l!st l!st*) f!n*l!z* * bt3n ds p*rm3trs d* l!st*.

P*r* d3cl*r*r "m* f"n cm l!st* v*r!v3l d3 p*rm3trs:

T!p d3 r3trn !d3nt!f!c*dr_d*_f"n (t!p1 p*r*m1, t!p2 p*r*m2,


...);

nd3 * 3l!ps3 (. . .) d3nt* !nc! d* l!st* v*r!v3l d3 p*rm3trs.

"m 3x3mpl: f"n q"3 r3c3b3 n v*lr3s 3 r3trn* * s"* md!*:

/* n * q"*nt!d*d3 d3 v*lr3s, q"3 vm 3m s3g"!d* n* l!st* d3


p*rm3trs */
fl*t m3d!* (!nt n, ...)
{
fl*t sm* = 0;
!nt !;
v*_l!st v*lr3s; /* l!st* d3 p*rm3trs */
v*_st*rt(v*lr3s, n); /* n lt!m p*rm3tr f!x *nt3s d*
l!st* d3 p*rm3trs v*r!v3!s */

fr (! = 0; ! < n; !++)
{
/* *q"! v*lr d prx!m p*rm3tr, d3 t!p fl*t *d!c!
n*d * sm**/
sm* += v*_*rg(v*lr3s, fl*t);
}
v*_3nd(v*lr3s); /* f!n*l!z* * bt3n ds p*rm3trs */

r3t"rn sm*/n;

V3tr3s 3 m*tr!z3s

D3f!n! d3 v3tr

V3tr 3m C "m* v*r!v3l cmpst* pr "m cnj"nt d3 d*ds cm "m m3sm nm3 (!d3nt!f!
c*dr) 3 !nd!v!d"*l!z*d*s pr "m nd!c3.

D3cl*r* d3 v3tr 3m C

v3tr d3cl*r*d d* s3g"!nt3 m*n3!r*:

t!p nm3 [t*m*nh];

nd3 t!p t!p d3 c*d* "m ds 3l3m3nts d v3tr 3 t*m*nh nm3r d3 3l3m3nts d v3tr.
P*r* *c3ss*r "m 3l3m3nt d v3tr * s!nt*x3 :

nm3 [nd!c3];

!MPRT*NT3! nd!c3 d pr!m3!r 3l3m3nt d3 "m v3tr S3MPR3 Z3R! *ss!m, !nd!c3
pd3 v*r!*r 3ntr3 0 3 v*lr d3 t*m*nh 1.

Pr 3x3mpl, p*r* * d3cl*r* d3 "m v3tr ch*m*d t3st3 c"j t!p ds d*ds ch*r 3 q"3 t3nh*
4 ps!3s d3cl*r*-s3:

ch*r t3st3 [4];

nd!c3 d lt!m 3l3m3nt !nd3xv3l d v3tr 3, p!s 3m C * pr!m3!r* ps! "t!l!z*d* *


ps! 0. N3st3 c*s *s ps!3s d!spnv3!s n v3tr s *s s3g"!nt3s:

t3st3[0]
t3st3[1]
t3st3[2]
t3st3[3]

P*ss*g3m d3 v3tr cm p*rm3tr p*r* f"n

3x!st3m trs m*n3!r*s pssv3!s:

t!p_r3trn nm3 (t!p v[t*m], ...);


t!p_r3trn nm3 (t!p v[], ...);
t!p_r3trn nm3 (t!p * v, ...);

3m tds s c*ss * f"n r3c3b3 "m* r3f3rnc!* (3nd3r3). Nt3 q"3 n* lt!m* m*n3!r* "t!l!
z*d "m pnt3!r, q"3 s3r 3xpl!c*d m*!s *d!*nt3.

Pr s3r p*ss*d* "m* r3f3rnc!*, *s *lt3r*3s f3!t*s ns 3l3m3nts d v3tr d3ntr d* f"n
s3r r3fl3t!ds ns v*lr3s r!g!n*!s d v3tr (j q"3 s3 "t!l!z*r s"* ps! r3*l n* m3mr!*).

Pr 3x3mpl:

v!d trc* (!nt v[])


{
!nt *"x;
v[0] = v[1];
v[1] = *"x;
}

v!d m*!n(v!d)
{
!nt n"ms[2];
n"ms[0] = 3;
n"ms[1] = 5;
trc* (n"ms); /* *rg"m3nt nm3 d v3tr */
/* !mpr!m3 5, 3, j q"3 s v*lr3s d v3tr n"ms fr*m
trc*ds d3ntr d* f"n trc* */
pr!ntf(%d, %d, n"ms[0], n"ms[1]);
}
6.4 D3cl*r* d3 m*tr!z

* d3cl*r* d3 m*tr!z3s s3 d d* s3g"!nt3 m*n3!r*:

t!p nm3[d!m1][d!m2];

nd3 d!m1 3 d!m2 s *s d"*s d!m3ns3s d* m*tr!z (n c*s d3 "m* m*tr!z b!-d!m3ns!n*l).
P*r* s3 *c3ss*r "m 3l3m3nt d* m*tr!z * s!nt*x3 :

nm3[!nd1][!nd2];

nd3 !nd1 3 !nd2 s3g"3m *s m3sm*s r3gr*s ds nd!c3s d3 v3tr3s "n!d!m3ns!n*!s (" s3j*,
pd3m *ss"m!r v*lr3s 3ntr3 0 3 * d!m3ns 1), s3nd !nd1 nd!c3 d* l!nh* 3 !nd2 nd!c3
d* cl"n*.

*s r3pr3s3nt* grf!c* d3 "m* m*tr!z M 3x2 s3 d d* s3g"!nt3 m*n3!r*:

M[0][0] M[0][1]
M[1][0] M[1][1]
M[2][0] M[2][1]

N* m3mr!* 3l* pd3 s3r v!st* d* s3g"!nt3 frm* (bs: s v*lr3s d* 3sq"3rd* r3pr3s3nt*m
3nd3r3s *rb!trr!s d3 m3mr!*, cns!d3r*nd "m* m*tr!z d3 3l3m3nts ch*r d3 "m byt3):

0100 M[0][0]
0101 M[0][1]
0102 M[1][0]
0103 M[1][1]
0104 M[2][0]
0105 M[2][1]

P*ss*g3m d3 m*tr!z cm p*rm3tr p*r* f"n

*s pss!b!l!d*d3s s *s s3g"!nt3s:

t!p r3trn nm3(t!p m[][d!m2],...)


t!p r3trn nm3(t!p *m,...)

N pr!m3!r c*s, d!m2 d3v3 s3r frn3c!d p*r* q"3 cmp!l*dr pss* c*lc"l*r d3slc*m3nt
3m byt3s 3m r3l* * 3nd3r3 d pr!m3!r 3l3m3nt p*r* "m* d3t3rm!n*d* ps!.

N s3g"nd c*s, m s pd3 s3r "t!l!z*d *tr*vs d* *r!tmt!c* d3 pnt3!rs (3xpl!c*d* *d!*nt3).

3x3mpl:

v!d !nv3rt3_l!nh*(!nt m[][2])


{
!nt *"x1, *"x2;
*"x1 = m[0][0];
*"x2 = m[0][1];
m[0][0] = m[1][0];
m[0][1] = m[1][1];
m[1][0] = *"x1;
m[1][1] = *"x2;
}

v!d m*!n(v!d)
{
!nt m[2][2];
.
.
.
!nv3rt3_l!nh*(m);
.
.
.
}

!n!c!*l!z* d3 v3tr3s 3 m*tr!z3s

P*r* v3tr3s: v*lr3s 3ntr3 ch*v3s, s3p*r*ds pr vrg"l*s. Pr 3x3mpl:

!nt pr!ms [7] = {2, 3, 5, 7, 11, 13, 17};

C*s nm3r d3 v*lr3s d3 !n!c!*l!z* s3j* m3nr q"3 t*m*nh d v3tr, *s ps!3s
r3st*nt3s s3r pr33nch!d*s cm z3rs. Pr 3x3mpl:

!nt t3st3[5] = {1, 2, 3}; /* t3st3[3] 3 t3st3[4] r3c3b3m 0 */

P*r* m*tr!z3s c*d* l!nh* pr33nch!d* 3ntr3 ch*v3s, cm v*lr3s s3p*r*ds pr vrg"l*s. Td*s
*s l!nh*s f!c*m 3ntr3 ch*v3s.
3x:

!nt m[5][3] = {{1, 2, 3,}, {3, 2, 1}, {3, 3, 2}, {1, 2, 1} {3,
2, 0}};

C*s *lg"m 3l3m3nt n s3j* 3xpl!c!t*d, 3l3 s3r pr33nch!d cm z3r.


3x:

!nt m2[3][4] = {{3, 2, 5}, {4, 6}, {1, 2, 3, 4}};

3 2 5 0
4 6 0 0
1 2 3 4

Pnt3!rs

Pnt3!r 3m C "m* v*r!v3l q"3, * !nvs d3 *rm*z3n*r "m d*d d3 "m d3t3rm!n*d t!p,
*rm*z3n* 3nd3r3 d3 "m d*d d3 "m d3t3rm!n*d t!p:

Pnt3!rs s "s*ds fr3q3nt3m3nt3 p*r*:


*c3ss * 3/S m*p3*d* 3m m3mr!*
"s d3 *lc* d!nm!c* d3 m3mr!*.
*lt3rn*t!v* p*r* p*ss*g3m d3 p*rm3trs pr r3f3rnc!* (3m C++)
D3cl*r* d3 pnt3!rs 3m C

s pnt3!rs s d3cl*r*ds d* s3g"!nt3 m*n3!r*:

t!p *nm3;

nd3 nm3 !d3nt!f!c*dr d pnt3!r 3 t!p t!p d3 d*d p*r* q"*l 3l3 pd3 *pnt*r.
3x:

!nt *d;
shrt !nt *ptr;
fl*t *ptr2;

p3r*dr3s d3 pnt3!r

p3r*dr &: p3r*dr d3 r3f3r3nc!*. R3trn* 3nd3r3 d3 "m* v*r!v3l. Pd3 s3r "t!l!z*d
p*r* !n!c!*l!z*r "m pnt3!r.

p3r*dr *: p3r*dr d3 d3rr3f3r3nc!*. R3trn* cnt3d d 3nd3r3 *pnt*d pr "m pnt3!


r.
3x:

!nt x,*;
!nt *ptr;
x = 30;
ptr = &x; /* ptr <- 3nd3r3 d3 x */
.
.
.
* = *ptr; /* * r3c3b3 cnt3d d 3nd3r3 *pnt*d*/

"m md d!dt!c p*r* 3nt3nd!m3nt d3 pnt3!rs l3r s!gn!f!c*d d3 * 3 & cm cnt3d


d 3nd3r3 *pnt*d pr 3 3nd3r3 d3, r3sp3ct!v*m3nt3. Pr 3x3mpl n s3g"!nt3 cd!g:

!nt *ptr;
!nt x;
x = 10;
*ptr = 3; /* CNT3D D 3ND3R3 *PNT*D PR ptr r3c3b3 3 */
ptr = &x; /* ptr r3c3b3 3ND3R3 D3 x */

Prbl3m*s n "s d3 pnt3!rs

- Pnt3!rs s3mpr3 d3v3m *pnt*r p*r* 3nd3r3s crr3spnd3nt3s * v*r!v3!s q"3 t3nh*m s!d
d3cl*r*d*s " * r3g!3s d3 m3mr!* n*s q"*!s n 3x!st*m d*ds " cd!g d3 "trs prgr*m*s.
Pr 3x3mpl, s3g"!nt3 cd!g *rm*z3n* cnt3d d* v*r!v3l x 3m "m 3nd3r3 q"*lq"3r, q"3
pd3 s3r "m 3nd3r3 !nvl!d.

!nt *ptr;
!nt x = 3;
*ptr = x; /* 3RR! P*r* nd3 ptr *pnt*??? */

- Pnt3!rs d3v3m *pnt*r p*r* d*ds d m3sm t!p d3 s"* d3cl*r*, d cntrr! pd3m
crr3r !nt3rpr3t*3s 3rr*d*s n* p3r* d3 d3rr3nf3r3nc!*. Pr 3x3mpl, s3g"!nt3 cd!g
n *rm*z3n* v*lr 56 n* v*r!v3l f, j q"3 pnt3!r p*r* fl*t t3nt*r l3r t*m*nh d3 "m
d*d fl*t * p*rt!r d 3nd3r3 d3 m3mr!* d* v*r!v3l x 3 n t*m*nh d3 "m !nt, q"3 t!p
d3cl*r*d d* v*r!v3l x.

!nt x = 56;
fl*t *ptr;
fl*t f;
ptr = &x; /* Pnt3!r p*r* fl*t *pnt* p*r* !nt */
.
.
.
f = *ptr; /* 3RR! V*lr d3 F n 56 */

*r!tmt!c* d3 pnt3!rs

V*lr3s n"mr!cs !nt3!rs pd3m s3r *d!c!n*ds " s"btr*ds d3 "m pnt3!r. r3s"lt*d "m
3nd3r3 q"3 s3g"3 *s r3gr*s d* *r!tmt!c* d3 pnt3!r, " s3j*:

P*r* "m pnt3!r d3cl*r*d d* s3g"!nt3 m*n3!r*:

t!p* ptr;

3 !n!c!*l!z*d cm "m 3nd3r3 3nd1:

ptr = 3nd1;

* p3r* ptr + N, nd3 N "m nm3r !nt3!r, r3s"lt* "m 3nd3r3 q"3 !g"*l * 3nd1 m*!s N
v3z3s t*m*nh d t!p d3 d*d *pnt*d (" s3j*, t*m*nh 3m byt3s d3 t!p). Pr 3x3mpl,
cns!d3r*nd q"3 * v*r!v3l x f! *lc*d* n 3nd3r3 120:

!nt x, y;
!nt * ptr;
ptr = &x; /* ptr r3c3b3 3nd3r3 120 */
y = *(ptr + 4); /* y r3c3b3 cnt3d d 3nd3r3 120 + 4*(t*m*nh
d !nt) == 3nd3r3 128 */

"tr 3x3mpl:

fl*t *ptr;
ptr = (fl*t*)100; /* pnt3!r fr*d p*r* 3nd. 100 */
.
.
.
*(ptr + 3) = 15; /* Nm3r 15 *rm*z3n*d n 3nd3r3 100 + 3x4
= 112 */

R3l* pnt3!r-v3tr

Q"*nd "m v3tr d3cl*r*d, !d3nt!f!c*dr d3st3 v3tr m*rc* 3nd3r3 d3 !nc! d* r3* d3
m3mr!* *lc*d* pr 3l3. *ss!m, nm3 d v3tr pd3 s3r "s*d cm r3f3rnc!* d3 3nd3r3 cm
s m3sms p3r*dr3s "t!l!z*nds p*r* pnt3!rs. Prt*nt:

!nt v3tr[10], b; /* v3tr *lc*d n 3nd. 100 (p. 3x.) */


.
.
.
b = v3tr[3]; /* ps! 3 == 3nd. 106 d3 m3mr!* */

3q"!v*l3 *:

!nt v3tr[10], b; /* v3tr *lc*d n 3nd. 100 (p. 3x.) */

/* N* m3mr!* !ss s3r g"*rd*d n* ps! 106 -> 100 + 3 x


T*m*nh d t!p d3 d*d *pnt*d (!nt = 2 byt3s) */
b = *(v3tr + 3);

"s d3 pnt3!r p*r* p*ss*g3m d3 p*rm3trs

3m m"!ts c*ss !nt3r3ss*nt3 q"3 "m* f"n frn3* m*!s d q"3 "m v*lr d3 s*d* cm s3"
r3s"lt*d. Prm * s!nt*x3 d3 l!ng"*g3m C p3rm!t3 sm3nt3 "m v*lr d3 r3trn d!r3t (*tr*vs
d cm*nd r3t"rn).

"s d3 pnt3!rs cr!* "m* *lt3rn*t!v* p*r* q"3 "m* f"n frn3* m*!s d q"3 "m v*lr d3
s*d*, b*s3*d n f*t d3 q"3 cnc3!t d3 3nd3r3 3m "m prgr*m* !nd3p3nd3nt3 d3 3scp.
" s3j*, s3 "m* f"n ch*m*dr* frn3c3r p*r* * f"n ch*m*d* s 3nd3r3s d3 s"*s v*r!v3!
s, * f"n ch*m*d* pd3r r3c3b-ls 3m pnt3!rs 3 pr33nch3r v*lr3s n3st3s 3nd3r3s, q"3
pr s"* v3z 3st*r d!spnv3!s p*r* *c3ss d!r3t p3l* f"n ch*m*dr*.

3x3mpl:

/* f"n r3c3b3 d!s 3nd3r3s d3 !nt cm p*rm3trs */


v!d trc* (!nt **, !nt *b)
{
!nt *"x;
*"x = **; /* cnt3d d 3nd3r3 r3c3b!d cm
p*rm3tr */
** = *b
*b = *"x;
}

v!d m*!n(v!d)
{
!nt n1 = 8, n2 = 5;
/* 3nd3r3s d3 n1 3 n2 s p*ss*ds p*r* * f"n trc*()
*/
trc* (&n1, &n2);
pr!ntf(%d, %d, n1, n2);

Str!ngs

8.1 D3f!n! d3 str!ng

Str!ngs s s3qnc!*s d3 c*r*ct3r3s d!v3rss. S cnh3c!ds pr l!t3r*!s n* t3r!* d3 *lgr!


tms 3str"t"r*ds, s3nd r3pr3s3nt*ds 3ntr3 *sp*s. *lg"ns 3x3mpls d3 str!ngs:

F"l*n d* S!lv*,
? !nt3rrg*? ,
1,234,
0.

3m C, str!ngs s r3pr3s3nt*d*s *tr*vs d3 v3tr3s d3 c*r*ct3r3s, t3rm!n*ds cm c*r*ct3r3 d3


f!m d3 str!ng c"j v*lr n* t*b3l* *SC!! z3r (0 " \0).

8.2 D3cl*r* d3 str!ng

"m v3tr 3m C q"3 pr3t3nd* *rm*z3n*r "m* str!ng n c*r*ct3r3s d3v3 s3r *lc*d cm n+1 ps!
3s d t!p ch*r p*r* cnt3r t3rm!n*dr d3 str!ng. * !n!c!*l!z* d3 "m* str!ng pd3 s3r
3f3t"*d* cm "s d3 "m* s3q"nc!* d3 c*r*ct3r3s 3ntr3 *sp*s.

3x3mpls d3 d3cl*r*3s d3 str!ng:

ch*r fr*s3[] = Pr!m3!r* str!ng; /*!n!c!*l!z* s3m * d!m3ns */


ch*r fr*s3[16] = Pr!m3!r* str!ng;
ch*r fr*s3[6] = {T, 3, s, t, 3, 0); /* !n!c!*l!z*d cm
"m v3tr d3 c*r*ct3r3s cm"m, fr*nd c*r*ct3r t3rm!n*dr */

N c*s d pr!m3!r 3 d s3g"nd 3x3mpl, * r3pr3s3nt* d v3tr d* str!ng fr*s3 :

P r ! m 3 ! r * f r * s 3 0

nd3 c*d* q"*dr*d r3pr3s3nt* "m byt3 d3 m3mr!* (t*m*nh d3 "m ch*r).

8.3 p3r*3s sbr3 str!ng

Str!ng n "m t!p pr!m!t!v d* l!ng"*g3m C, pr !ss *s s3g"!nt3s p3r*3s N s vl!d*s:

ch*r str1[10];
ch*r str2[] = P*l*vr* 2;
str1 = str2 /* 3RR! N cp!* str2 3m str1 */

!f (str1 == str2) /* 3RR! N cmp*r* str1 cm str2 */


{
.
.
.
}

P*r* p3r*r sbr3 str!ngs s "t!l!z*d*s f"n3s d* b!bl!t3c* str!ng.h. 3st* b!bl!t3c* pss"!
*lg"m*s d3z3n*s d3 f"n3s cm d!v3rs*s v*r!*3s 3 pr q"3st3s d3 s!mpl!f!c* *p3n*s
*lg"m*s d*s pr!nc!p*!s s3r 3xpl!c*d*s n3st3 m*t3r!*l. P*r* m*!r3s d3t*lh3s sbr3 *s d3m*!s
f"n3s, cns"lt*r dc"m3nt* sbr3 * b!bl!t3c* (g3r*lm3nt3 d!spnv3l ns *rq"!vs d3 *j"d*
ds *mb!3nt3s d3 d3s3nvlv!m3nt).

8.3.1 strl3n

Prtt!p:

!nt strl3n (ch*r *str!ng)

D3scr!: R3trn* nm3r d3 c*r*ct3r3s d3 "m* str!ng (3xc3t c*r*ct3r3 d3 f!m d3 str!ng).
3x3mpl:

ch*r nm3[] = F"l*n;


pr!ntf ( nm3 pss"! %d l3tr*s, strl3n (nm3));

8.3.2 strcpy

Prtt!p:

ch*r *strcpy (ch*r *str!ng1, ch*r *str!ng2)

D3scr!: Cp!* cnt3d d3 str!ng2 3m str!ng1 3 r3trn* 3nd3r3 d3 str!ng.


3x3mpl:

ch*r str1[10];
ch*r str2[] = P*l*vr*;
strcpy (str1, str2); /* *gr* str1 t*mbm cntm P*l*vr* */

8.3.3 strcmp

Prtt!p:

!nt strcmp (ch*r *str!ng1, ch*r *str!ng2)

D3scr!: Cmp*r* s cnt3ds d3 str!ng1 3 str!ng2 c*r*ct3r * c*r*ct3r 3 r3trn*


0 s3 str!ng1 = str!ng2
<0 s3 str!ng1 < str!ng2
>0 s3 str!ng1 > str!ng2

3x3mpl:

ch*r nm31[] = F"l*n


ch*r nm32[] = B3ltr*n;
!f (strcmp (nm31, nm32) == 0)
{
pr!ntf (Nm3s s !g"*!s);
}
3ls3
{
pr!ntf (Nm3s s d!f3r3nt3s);
}

8.3.4. g3ts

Prtt!p:

v!d g3ts (ch*r *str!ng1)

D3scr!: R3c3b3 "m* str!ng v!* t3cl*d 3 *rm*z3n* 3m str!ng1. s c*r*ct3r3s s


*rm*z3n*ds *t q"3 3nt3r s3j* pr3ss!n*d.
3x3mpl:

ch*r nm3[10];
g3ts (nm3);

bs3rv*3s:
* f"n g3ts() p3rm!t3 q"3 "s"r! frn3* m*!s c*r*ct3r3s d q"3 s q"3 pd3m s3r
*rm*z3n*ds n v3tr, q"3 pd3 c*"s*r "m 3rr. P*r* 3v!t*r 3st3 prbl3m*, pd3-s3 "t!l!
z*r * f"n fg3ts:

ch*r nm3[10];
fg3ts(nm3, 10, std!n); /* std!n "m *rq"!v *b3rt pr
p*dr, r3l*c!n*d *s d*ds d!g!t*ds v!* t3cl*d */

N 3x3mpl mstr*d, fg3ts r3c3b3r!* 9 c*r*ct3r3s (" *t q"3 "s"r! t3cl*ss3 3nt3r) 3
*rm*z3n*r!* s d*ds d!g!t*ds n* str!ng nm3, *d!c!n*nd c*r*ct3r t3rm!n*dr d3
str!ng. !mprt*nt3 bs3rv*r q"3, c*s "s"r! d!g!t*ss3 3nt3r *nt3s d3 9 c*r*ct3r3s,
c*r*ct3r d3 nv* l!nh* (\n) t*mbm s3r!* *rm*z3n*d n v3tr.

g3ts() t3rm!n* q"*nd "s"r! d!g!t* "m 3sp*, !mp3d!nd * d!g!t* d3 fr*s3s cm
m*!s d3 "m* p*l*vr*. P*r* cntrn*r 3st3 prbl3m* pd3-s3 "t!l!z*r p3s d3 r3c3b!
m3nt d3 d*ds d sc*nf:

sc*nf (%s, str); /* R3c3b3 "m* str!ng *t q"3 pr!m3!r


3sp* s3j* !ns3r!d */
sc*nf (%[\n]s, str) /* R3c3b3 "m* str!ng *t q"3 s3j* 3nv!*d
c*r*ct3r3 *SC!! \n, q"3 crr3spnd3 * 3nt3r */

3ntr*d* cntrl*d* d3 d*ds

pssv3l f*z3r "m* 3ntr*d* d3 d*ds cntrl*d* (" s3j*, s c*r*ct3r3s s ch3c*ds *ss!m q"3
s r3c3b!ds) r3c3b3nd s m3sms "m * "m. N 3x3mpl * s3g"!r !mpl3m3nt*r3ms "m*
3ntr*d* d3 s3nh* q"3 mstr* s c*r*ct3r3s * n* t3l* * !nvs d*s l3tr*s crr3spnd3nt3s "t!l!
z*nd * f"n g3tch (q"3 n 3c* c*r*ct3r d!g!t*d p*r* mn!tr). Nt3 q"3 s s3r *c3!ts
l3tr*s 3 n nm3rs 3 smbls.

!nt ! = 0; ch*r str[9];


pr!ntf (D!g!t3 "m* s3nh* d3 !t l3tr*s);
wh!l3 (! < 8)
{
str[!] = g3tch();
!f (((str[!] >= *) && (str[!] <= z)) || ((str[!] >=
*) && (str[!] <= Z)))
{
pr!ntf (*);
!++;
}
}

*lc* d!nm!c* d3 m3mr!*

*lc* d!nm!c* d3 m3mr!* cns!st3 3m r3s3rv*r 3sp* p*r* *rm*z3n*m3nt d3 d*ds sb


d3m*nd*, l!b3r*nd 3st3 3sp* q"*nd n fr m*!s n3c3ssr!. P*r* f*z3r *lc* d!nm!c*
s "t!l!z*d*s f"n3s d* b!bl!t3c* *llc.h, d*s q"*!s *s pr!nc!p*!s s3r *pr3s3nt*d*s *q"!.

* f"n m*llc "s*d* p*r* t3nt*r *lc*r "m 3sp* cntg" d3 n byt3s d3 m3mr!*. C*s cns!
g* 3l* r3trn* 3nd3r3 d3 !nc! d* r3* d3 m3mr!*, c*s cntrr! r3trn* z3r. prtt!p d*
f"n :

v!d* m*llc (!nt n);


3x3mpl:

!nt *v;
!nt n;
pr!ntf (Q"*nts 3l3m3nts n v3tr?);
sc*nf (%d, &n);
v = (!nt*) m*llc(n * s!z3f(!nt)); /* *lc*r n v3z3s t*m*nh
d3 "m !nt */
!f (v == 0)
{
pr!ntf (3rr);
}
3ls3
{
/* *q"! pd3r!* v!r cd!g p*r* m*n!p"l* d v3tr
.
.
.
*/
fr33 (v);
}

* f"n fr33() ch*m*d* * f!n*l d* "t!l!z* d 3sp* d3 m3mr!* d!n*m!c*m3nt3 *lc*d


p*r* l!b3r*r 3st3 3sp*, p3rm!t!nd q"3 s3j* "t!l!z*d pr "tr*s p3r*3s d3 *lc* d!nm!
c*. prtt!p d3 fr33 s3g"!nt3:

v!d fr33(v!d* ptr)

nd3 ptr cntm 3nd3r3 !n!c!*l d* r3* d3 m3mr!* * s3r d3s*lc*d*.

You might also like