[PDF]

JC
BF P
L@ ;)
BF #
WA=@ #
I@ CC >
?> F ? UF
C B@
Q> IZ
K
I@ J
[
A
JF B
IK B@ @
JC O
P>
J \ C@
@ YF Q K
TJ
@
KI ] C F
@ G
?=>
C I V>
? BK W@
B c
#
S@
K
B
G
[Q
IK
?a
IIK
K
J@
BC
1+1
n
$
2
- #
#
}
B
P@
U
rx
CC
==@
K
>^
[A B
@
? F
B>
K
CX@
T
?@
G =@
#
>
= BC
@ Sb
rw
ru
rt
rs
O[
P>
C R@
C
B>
I F T>
G @C I
I@
IA@
rr
rq
r|
^ IF
T B C P@ @ G
@
R
G I? IA@ QL>
?D @
I @F
B>
` _ I F ? B>
@
M ` C ZF M
T M P
O @ LC [ B
T>
?=K B
S@
Q
C PK
K R@ I B> @
J @ B>
OF CR F
B > I B@
TC P
K
L@
= P O Q> B@
P@
C BK Y M I@ I@
C ?K B
P@
[T S R XC@
T
?C F B P@ ?@
I
Z @ =@
TL >
C U
G # B QL>
S@
K @F
O[K K B P@
B> I B@
?L F
?F
AC
@
=B
B
P@
U A
{
q
qz
qx
qw
B C>
P@
L LA@>
EF I@
LF K
I JK ?> B F
M [J C
J
O @ @ YF
?=K K
?R
F RF
IK B@ TZ
A
B@
Q> K
J
I@ B J
?
B T P@
P@
>
L
?T RR I S@
NMC
>
L S@ I
IMNC ? R@ F
B BF
A P@ [? UF
> Z
OI@ B P@
C A
> I
U F
B L@
M O> ?T
@
G B L
= S@
IC
K
?L>
Z
?D G
I@
K
AK J
K= JF
B
?> F
I> V M C
W@
K P>
AL QO@
J@ M I@
F
[T> U O@>
? B@ U
O?K
B Q PK
B> @
B>
? R@ F A
I>
B
[ FU =@C
B C
P@ ?K \
QL> ? R
F
@F A
B IK
K P@ T B F
=
IC B@ JK
?F I
B@ F
B> IK
?O B@
Q>
B @
PK I
B ]
>
=@C
?@
XTC@
qu
qt
I> V
W@ ? D
K
AL = E@
M J@ ?> B F
G
O@
H
?=K ?>
?
> ?=>
O > BI
F
IK B@ C J
BK
B@ B@
Q>
?L@
I@
M
N
B BC
P@
CX@ O@
T Q PK
?@ @
=@ ?K J@
> I
?T U @
KR
L S@ T S>
IC B
B
P@
?=>
A=@
?K > B
A R UF
B@
I@ IK
>I U ?> B F
G
L
qs
qr
qq
q|
{
(
# ( $
# # $ #
# ) $
) *
#
) #
' ' $$ - #
%
<
$
$ $
) * 3 2
3
.-( + # #
?=> A=@ $
BC %
% & z
x w
y
: $
$ '
# $ #
$ + )
% (
##
) + # # ;) $ ( *
( %0 $
## # #
'
% -
&
(
u t
v
'
$ '
#
% 5
# (
#
'
# '
5 %0
(
#
.-( (9
*
(
#
#
#
(
(
#
4
# #
7 #
# ) +
# ) * ((
% #
#
* # s
r
+
q
3
1
32
1
6
78
5
( 4
$
)
#
/0
G
C B>
e
Q @ EF
@
I> U
M
G
[Q
?K
crossed_out
B K ^
P@ T P@
C> I @ J > U
B
? F ? P@
JJ>
>I T
O? F
AZ
I R@ L S@
I>
I
B>
ZIK
Z@ PK
B C
LT
B> K
? F I@ J C F C@
K > C
W R@ [ R U ?K
[A B K
?@ S@ @ IIK
[
I>=
[A B
C
O?@ C@ ?K Q@
@@ T> R R K
IA@ I
?K R B I K SF
>I @C J@
?
IIK > ?@
K
[ G B BC
B
>
I a P@
? J@ U IK \
[ =
Z B ? F ? PK
P R ?Z I> U
=@C F F B
Z
^ K ? F ] P@
A P@ OK J > U M C JF
I> [ C I B
ZIK C BK LK B O P@
I ?> F I@
L B
P@
% $ ( ' )
$
* ( # & !
% #"
$$
"
#
& %
I> U O
ML
K pI
C
? B P@
@C
IT?
+,
$
(
)
$
*
-.( n−1
n = 1, 000
>
?L@
U
n > 0
@
Program 13:
#
>
?a
IIK
K
[
>
? J@ U
ZB
P
K
ZZI
@
ZK
C B@
0
)
rz
@
B >
P@ U
XTC@ B P@
?@ K
Z
G =@ ZI@
ZK
aJ B@
J R
B >
C@ P@ @ Sb
? J@ = BC
Z B B\
cdP P@
$
XTC@ ?@ M #
C=@ ]
O@
I> U T
C
L?K @
BC F
IIK K
[ [A B ;I>
@ #
O #( %
C P> Q@ ) TK J A \
@ >
I?K C F
?> B F
Z@ ]
? F ?>
crossed_out[i]
i
OF
B
P
ZP KF
B J@ S
P@
> U I> \
JJ>
C
O? F A F
L
Z [J
R@ K
= II
IK JK [K
?> B F ~ ]
? R@ 
@
R
B
IT> P
CF
RC
B>
TZ B F B
T> P@
AC LK
K B
M I B P@
LK
O F BF
B =K
P
B BJ
P@ [A
@ @
J@
?L@ G BC ?
C D
I@ B> B P@
C R =>
F AL
c R@ T
[c S I B@
C eC
F
R@
?LK
@C@ \ F
TZ VF L@
I@ LI>
M[
G f ] ?K
IIK
K
[
?=>
K
n
IK
I>
1000
M
(
C
…
Definition.
J
@ YF
JF
2
)
A@C
II=>
@C F ?>
>
n
IK B@
n−1
‚ €
ƒ„
IC
n
M J@
2
n
~
g@
A
T==
n
†@
M I@
‚
ƒ„
TL
=>
2.6.1 Array types
K
ATL
? BF T B
C
B Z C
PK K BK
B A JJ I
IK@ I B
? F [S
> L@ C
A B ?T P>
I
O? F
F
G L@ L S@ ?ZK
IC
B D C IK
OI> LK IK
J [
C Y I J@ ? F
J B K
@ YF ? PK =
B K ?> B F
C PF
h[ QZ F h
T> ?@ i
?T # OI
B@ F L S@ R> I ?O M # j
B C SK * 1
P@ @ CX@ R
T ?> C F
?@ I K
= KU
=@ ?>CC C B
> F
?T U
ZT> L@ B
P>
L S@ B R
B
IC P@ I> U
L S@
?T
1, 2, . . . , n
AL
D
[T> U
[
M @ B B S@
L S@
g@ IA@ O?@@
B
IC
B? ? eC I>
k PF > B ?K
Y B F
K R KB R
T S> O@ AC
J I
B ?> J F G
B F B M L@ E
I> U P@ ?K I BK
K I=> R ? B F
I B
?LT F ?@ ? P@ ZI U
=B
>
M B@ @CC I=> M L
C
B > U TC> [T>
P@ B
P B
LK C F K J K J
>I b L@ J OK
XT B A BC F [C
P>
@C R IA> Z>
TS
@ B>
?> B F
B I B
C F ZI> TL ? P@
B F A B JF W @
C PF Z B P J@ ?T B
h B> G C
P> B
L S@
O P@
I?
F
R> A
>
L
B
O@ J@
I=>
I=> ?L@
CC
@
CC BK
T> ?> B F
T> R
G
B
B
?T
2.6 Arrays and pointers
bool
n
// Program : eratosthenes.C
// Calculate prime numbers in {2 ,... ,999} using
// Eratosthenes ’ sieve .
# include < iostream >
int main ()
{
// definition and initialization : provides us with
// Booleans crossed_out [0] ,... , crossed_out [999]
bool crossed_out [1000];
for ( unsigned int i = 0; i < 1000; ++ i)
crossed_out[i ] = false ;
// computation and output
std :: cout < < " Prime numbers in {2 ,... ,999}:\ n";
for ( unsigned int i = 2; i < 1000; ++ i)
if (! crossed_out[i ]) {
// i is prime
std :: cout < < i < < " ";
// cross out all proper multiples of i
for ( unsigned int m = 2* i ; m < 1000; m += i)
crossed_out[ m ] = true ;
}
std :: cout < < "\ n";
}
return 0;
H
o
n
ml
@K
P@
C F L@
L> O PK
Q BF B
K C
B@ ?K BI
R
[ S Z@
B R@
P@
TC I= JK
K
SC B
IA= ?> F
F
>
A> B I U
@I LK
K B
>
G I B> U
K
?D ?
IK
@ R@ I
M R M [K
B O
P@ F
B
R@ ? P
>
=
IK JK W@
A
?> B F J
= FF
B
[A B
?@
K
L@
C>
^
C
i
I
L S@
?T P@
0
i<n
i
n
F
[]
a
s
i
i
i
$
# *
a[2]
5
- JJC
{
TZ VF L?K ?
I@ F D
G L@ K U
f
M =B
L> I?K
M [I
?C F R>
=@ LK
?K ==@
CC
IIK ? F
K K
[ ?
K IK
J I
O[K [K
C R
> I@ F
T== =
A [ BJ
@C F I@
T
K R
=@
?=> C
B>
TZ B F I?K
T>
C R>
C@ L
K
> B ==@
U CC
?
L@ F
L> B P@
[I =>
=@ A
NM JJC TL
C@ I B@
@ eC
O? F
Z
R@
=
IK JK
?> B F
P@
?>
BF
CF
int a [5] = {4 ,3 ,5 ,2 ,1}; // array of type int [5]
int b [5];
b = a;
// error : we cannot assign to an array
Z
[ PJ
IT>
L
B@ F
?K R
B>
?
L@
[
I> T>
B?> F I
K C R@
J Y
B>
R>
BC F C@
?
A R@ >
B TC B
P A
OF A
? B PF I>
B
B I?K
A P@
G J@ F R>
LK
==@
CC
h
B
IA>
A
O
PK
K
I> U
B
P@
BF
L@
? S@
CF
I> RU
K
I@
E@
K
@
Q PK
IJ
\ @K
= [R
?> B F R
CF
G T=C
G C
@
] R
B
?IK P@
B@
R> I
LK LI?K
==@
CC R>
LK
L?@K =
=@
C ?CC
B F
PK ?=>
* B ?
@
= B
?> F
IIK
K OF
[ B
@ P
J@ B P@
?L@ =>
B A
?=K TL
I B@
S@ eC
[
LI>
L@
?LK F
@
L S@
L@
I
?T P@ M
=>
S@
P
= PF
B
Q>
I@
O
L
B
F ? P@
M Z AF
J@ T
B eC G B
C T
AL F B
[ J O@
Q JF
@ O JJF
==@
B CC@
F
K BI BC ? R
M CB ? F F
B W R@ B P@
P@
C
B G CF K
P
=A YF Q p LT@
TK ?
J@ F K J > FU
>
I
A U ? BF
?@ Z L
B OK
? RF P@ M [
W @ ?K
?Z A
QF I R
> @CC O
F
BF
MN=@C ?> F P
K\
J
? SK
L>C
Y
CF B
?K BI K B ]
C C P@
I@C U KC U CK
?K K B L@
C K
Q R Q@ =
KI TK C=@
T> F K J C
C ? BF BF
>
M L@
B Z ?
>
IA P@
AK
LK
I@C G I BB@
?=>
?D
a[0]
Figure 6:
? R@
@
T B>
?
RC
K J@
R
R

B
P@
I> F TC
>
U SC
B IA=
P@A F
I> A> B
ZIK I@K
G
L I B>
CF
R@
B@
= B@
KR
IT? B
BF
L@
?K
Q PK
S@
?F
Z
Z?Z
F
LA G
F
I J@
>
I@C
AC
@
=F
=
T R@ S
=>
[
B
>
? BF
?
I@
R
@=C F
B
PK
KB
?D
IK
C PF
K U I?K
=F
J
B F Z@
NM@C F IK@
B =K
T P@ J@ J
CK R
Z@ > T> U '
%
c >B
c U G
T S> ? ?
? RF CC J@
R [T>
=@C F I
IK
>
U
[A B
>I @
G
^
T P@
?
]
?K
I R@
? RF [? J
F
B Z
C PF [A B
=KC @
@
B
Q P@ LZ F
TK J B P
@C I> U
> W@
K
BU A
P@ L
J@
IIK S@
K ?K
[
@ [T
J@ ? U
?L@
RK
BC
I@ ?L@
BK
?LK F J
T [A B
?
?F @
F JF \
K BF @ Y
J
@F M
R
Q P@ M
TK J
@
?IK
Z@
>
U
^
CF
M B
P@
C@
>B
KU G
JJ
XTC@
?@
=@C
OF
B
KP
JJ
Z
M
JK
B@
AL G I ]
J@
B> ^P@
I
R@ @K
= JK ?C>
I@
?K C F
K B
IIK PK
[ B
>
U ?C F
[A B
@ >
B
B
P@
>
K
W@
O
I@ P@
ZB
>P
BU
P@
? J@
P@
CF
B
M
OI
O@
?=K
h
B@ F
Be
K= F
?J
K
L@
[
@
C@ \
?K U
K
IIK
>
I> U
E@
=
?> B F
G
G f
H
S@
J>
O
I> U
LI>
@
K ?>
I@ B
I@ G C PF
AC ]
?> aC
C B
F
SJ@ A P@
I
I> U >
ZIK
LK Y
?F L
M LI@
TZC I@ B TL
PK C
KB IB
QZ F @
?@ L@
IIK L S@
K I
[? B
F P@
W R@ ? J@
?F ZB
[P
@ R@ T>
CK R IC@
M
C B F ?K JU
C@ 
R
? S@ F
n
M
[Q
K
P@
IIK
B
K
`
P@
B
ZB
? J@
Z
T
P
F
>
?U
=
?> B F
K
J
[ BF
>I U
K
==@
C
?C
?C
I@
>
Z@
TZ
? JK
P@
`_
^
IK
KF
S
? J@
@
TS @
B G RC
OA@
T
B
B
C PF
?F
T R>
S
XT J@
>
C B@
I@ P@
?> \
[J
B>
>
LF
B
B
P@
L
[A B
@
>
~U
CF
^ LI>
P@ [
L@
F
[A B
G@
eC
U
?> B F
>

I@ RF
=B
? R@
~
‚ €
ƒ„
…
CF
>
U
[A B
@
G ?D
B
C PF
?C@
M C@
BF
CF
?K
?F
KC R
K
S@
I@
?=K
G
a
p+si
2.6.4 Arrays are not self-describing
p
s
i<n
=@
a[1]
0
h
J@
C F L?@
B >B
P@
K ? UF
I@ RR W R@
CC
A\ ?F
>C B
F P@
?> B F IK
I
] [K
O M
I@ P@ K
C
B AF
P@ L
IC  J@
@ B A=>
J@ TL
?L@ BK
> B ?> B F
U
C O BF
I BK K P
M BC I@ RR
?K CC
@
R C
B
P@
?=K
G
C
T@
[S
? JU ^ B P@ M
@C P@
C K U ? R@
> =B 
F
U
IIK B PK G ?> B F M
K B
[Q
B
IK K P@
KF I
S IK
C J@ [
? J@
M
I V> Z B
W@ P
K T
AL LC
J@ B
S@
B ?Y
C PF >
JF ?
L F OK
BK
?> B F => B
AL
@C R> J@ F
?
> BF
K B L@
JJ> =
J@
OT IK
C [J
B> JF
OI L BC F
B@ F
K B P@
T
i
O? F
Z
=>
R@
IK U
Z
?L@
B
T JJF
C
K BI
C B@
B
C PF
P@
@
s
DU
7
$ * ((
(
$
) (
# )
'
#
(
$ ( $
+ # $ #)
) - '
# #
a
G @=C
I>@ U K
TC ==@
CC
2.6.3 Random access to elements
^>
a[0]
P@
0
@
int a [5] = {4 ,3 ,5 ,2 ,1};
^
i
I P@
B
>U
JJ>
F
2.6.2 Initializing arrays
B
$
ZB
>P
U
B
P@
B
OF
T BP
?
F
?> B F
>
?K U
IIK
K
C Q
O F P> I@
B I C
G B PF [ B J ?> F
C@ >
@ U
pI
P> K
O C B>
B B
C PF ? P@
I@ @C
C Ce
BI Q@ F
= BF @
?> F ?
F
n
? B P@ C F
B ? B P@
P@
@ T
J@
?L@ L S@
I
>B >
? UF U
L@
W R@
IL>
C [
BKI =@
BC JJC
K B
B PK
B B
P@ K
C
L@ ? F
L> Z J@
[I Q K
=@ T J
JJ @
O >U
P>
@C T B P@
K ?
I@ RR R@
CC I
[J
CF ?F
Z
[A B
M @
C@
@ >
TZ VF TA==
I@
G NM@C F
P@
? J@
L
I> U
I@ RF
=
M [ BJ
K
?C
[
P@
? R@ 
^
? F R@
QZ [I J
?
TK J F
@C TZ? U
B> RK
B
P@ ?L@
@
J@ BK
?L@ [A B J
BC @
K R>
U @
I B@ ?C
OIK >
?B
RC FF
J\ K BF
@ YF JF
@
O@ B
P@
Q
R> K
F? B T J
F @C
C
KC
?=K
@
?L@
B
U
int
>U
JJ>
>]
U
R
T R@ R
=@
J@
@
G BC
[
K
P@
K
II
>
ti
G `
L
I> U
Z
? BF
?
S@
ZIK
(t1 , t2 , . . . , tn)
`_
B
T=> \
?L@
B@
I>
?L@
G B L
M ]
TS
B
O@
?=K
K
JC
A>
QI>
F
R@
B
Q P@
TK J
@C
BK
n
int[5] a
?> B F
K
?J
i
J@
R@
C
n
@P
P@
$ ?
M # EF
@=
O@ B
?=K ? P@
T
K
JC> L
I S@
OI >
FB@ U
IIK
K
[
@
J@
?L@
BC
?=K
double
B
R
PK L>
QC R
KT [? FU
J
@ F
M Z
B
B @ P@
P@
Q J J@
TK J ?L@
@ BC
>
?K U
IIK
K
[
R
=
IK JK
^
int a[]
c
a
I@ R
I@C U
B>
B
P@
U
?L F B
@ ?> F
B
P@
[A B
@
>
G U O BF
T P>
@ B
CK ?K
[ [
B ?F
PK F
B K BF
J
KF
C PK B
( ?> F
CF
?
) Q F
$ K
JF
M R
) T B P>
?F
MZ
B P
C PF ?C F
K= =@
G C@ F
B
@C R>
?
>
B
a
?K
R@
I B@
[ JJ
T
int[5]
[A B
@C
IK@
W@
A=@
K
P@
IIK
B
F
CF ^
[ S P@
L>
C
=> B
(( L?L>
G ## ?K
D TR
‚ U C
T@
ƒ„ U
CF J
> OK
? UF [>
B@ K U
ZIK ==@
J CC
[A B ? F
@ Z
?K ?K
[n]
[
[
Z
[? J
I R@
…
~
‚ €
ƒ„
[n]
a
II a
K
P@
[A B
T@
?
B
U
^
>
CF
CK B C F
C B F =K
[ U JJ@
R
B
P@
G ;
^ I>
P@ #
A>
I@K #( %
I B> ) >
U
C F B P@
K= @
JJ@ J@
R ?L@
B G
P@ B
# D
U
#( %
CF
) B
P@
) ? J@
Z
B
G > P
M U
TL
W R@
?F
P@
B G
a
MZ
?I F
A
AK
bool
[n]
Watch out!
a[10000]
a
a[n-1]
int a [] = {4 ,3 ,5 ,2 ,1};
a
s
a
O
P@
=>
B
F
TL
=P
B>
TZ 
I@
T>
B
P>
I J@
AL
OC
^
C PF
K
J> J
B
P@
QI F
TK J
@
CF
?Y
>
O?
K
B
=>
AL
J@ F
BF
L@
B
B
B
PK
U
…
~
‚ €
ƒ„
B
I@
[B
IA>
P@
A P@
@
L
Q PK
CC
?> F
C
B
I@ P@
IK@
>
B
I P@
?=>
C
? BK
WA@ B
I@
CC
?> F
MNC
TS
KB
J
>J
WA@
I@
f
o
n
ml
P@
) CF
Z)
F
B
F
Z
T P>
S@
B
TK J
@C
?=K
SK
Z
?C
= J>
F
K R@
M BF
A>
?@
?F
Z
F
?> B
A
K
B Z@C M
P@A
K
Z@C M
?F @
G B
S@ =
B T
O@
G ?@ ? BT
[A SJ
I@
I@ U
B>
Tb
C
T BB
I?
I>
A
eC
PK
?==@
@B
S>
?
B
TK ?> F
> Y IK B > ?C
J U F
[ S ?K Z?> IZ
C R F ?K
@
I BK
? B F = Z B> R>
?@ F
Z G B ? B P@ LK
=
OF
W@ NM=@CC
A B P ^P@
K > @B
Z@ JJ>U J@ O@
?=K
? ?L@
B? O F B #
P@ ?ZK
?>
$
K
= J>
[J
?C F J> B [Z P IK
Z T JF C> F IK
B CJ A [
P@
BI I@ F
S> K K B@
> Y C B@ ?> B F IK
?> B F
A> B P@
M
?@ A LK Y T
? F ?> @C S
F
B
Z h B B@ F O@
FB [ IK K
K T>
I
Z?K ( ?> B F @
F
?> Q> L?CC F
A > U I@ F
K T=> K Z
Z@C I ?=> B P@
C@
A>
I@ ? BK F @
K @ IK
R I c
K
2−3
BI
M =F
[T>
M
O
L@
I@ e
C>
[T>
CC J@ M
R
-
##
K
I@ RR
B@ CC@
[ RJ C
K T=>
? RRF JR
Z LI>
@
\ @
Z?>
F ?@= F
Z
B> [ B J
B ?K
? P@
W@ R
LI>
@ B ?@
J@ K
?L@ T B
IK
G B ] [ JJ
S@
=>
ATL
B@
R
[S
C
I BK
? BF
Z
OF
B
P
?K
@K
IA@
R
p
s
R ?=@ F
B B
[ P@ B@ F
K IK
JJ> B
?> F
OA>
B
I@K IT> P
?> B F Z
C ) P
J @ YF K G #
? RRF >
?
OI Z F
B@ F
I B@
P
> B II a
KC U [KC
K >
T= B I@
K ?
K J TK B
I
I@ RR K
CC ?K J
MN@C R
?K @
Q
RK
II a
K
[C
IK@
K
1
M
G
L
ZIK
I>
U
?F
I>
I R@
B>
Z>
B>
B
? P@
W@
@B
J@
?L@
?B
K P@
I
O F G [IK
BA
P
?> F I †@
@
B@
G IC C F
P>
O
O@
T=>
J
XT@ R
QF
K
? J@
[ BJ
? JF
@C
>
?F
?> B F
IK
P@
B@ F
B
B>
4−5
[S
K
I@ RR
G CC
OF
B
P
F
IK B@
?> B F
W R@
[S
?F
?> B F
IK B@
R
TS
B
O@ aR
eJ
WA@ J L B F
B@
? JK F M [ RJ
B
O C PF
PK J>
B eC > Y
C
?Z> F
LI>
Z?> @
? F A=>
L
R@ JF
BK =K
? JFF B@ R
K
B B
P@? IC 
W@ C B
F
C@ B Z P
B
= B
?> B F ? PK
C
? D B P@
I?K
I B@
R>
LC
> LK
U =
TZ VF =@CC
I@ Q
I@C
?> F
O@ M
Iteration by pointers.
? RF
JK
=@
IA@
@
Q PK
'
[
k
#
#
;
s
?>
A@C
II=>
B
[A B
@
[
I> V
?K
L
'
$
4
M
G
M
K T
I@ RR B
CC UF ^P
[ CF
I> U T> IX@
T
LC ? B P I F
F @
IK= Y C
K ?>
= B P T S> @
?F
B TL
A R@ M B F A B J
?@ B JF
P@ F
? R@ T =K B
L ?> F
[ B J A B J ?K
F
I> U J
=K F ?> R
L ?> B F
@
B
A P@ ?> K
R
QI@ [ J RF
BF
?
>
T> F =>
C
?> L@C I> U
@C ? F ?K
[
? D S@ K
T=K R
K U C@ I@ R
CC
=B
W
@
@
O
B
P@ => A=@
CK A
TL B
L@ B@ B P@
C@
@K I 
>B = G CB
U P
?D
W R@
IK
P@
B@ F
B I?K
R>
S@
g@
J
@ YF
R>
B eC
CC
==@
LK
? R>
@
[S
I?K
?=K
a
I@ RR
CC
? F Z@ B
? JF SK
@C = Y
K B>
I
IK
> G [C
U
I> B@ D
I
ZIK ?K
BF
L
G QZ>
@
I
@ ?K
Q PK IK
@ IK
C [
?@@ >
U
B ? J@
PK
B ZB
F B P
Z P@
L
B K
O M ?> F ==@C
C
I@ P@
B T? U
P@
?K > U =
J B
R J> ?> F
O? F K
Q PK Z [ B JF
@ XC@ >
B T KU
T P@ ?@ II
TC =@ [K
K > C
J K U ?C F
L?@K R F
B@
? F I@C R ?I
C@ K
G ZC C JJ
[
CF
SK
=> C@
ATL R
?>
B@ K
hR IR
@C R
C
IK
BF
P
L@
G BF
=
T
?I
M
p
#
B
[P
CF
B
C PF
G [K
IIK
I P@
>
?LK
I> U
IK
IK
?K
@
F
K BF
JF
>
? BF
Iteration by random access.
[
?
?=K
> JC
K
@
(n − 1)s
TC F
=@ K
JJ JF
O @K
I@ P@ A
>
B ?F
P@ B@
> I
@ Sb ƒK G
A= B ?CK
?> F
K
B@ II>
R
B> OA
>
[S ?F
?
ƒC B F
I BK Z
MN BC K B>
C@
@ =@
? JJ
TZ VF F
I@ B
P@
G
=>
ATL
I B@
eC
?LK F
G ] @
@ Sb
K=
^
=
) B Q P@
JJ
TK J
B
@
T P@
>
?
K U
A
I R@
[ S ?>
[? J
B F
F
A P@ I B@
Z
[A B
?> F B>
@
>
I B@ CF
U
G B
P@
K
?a
WA@
I@ RR
CC
I@
>
CC
?K U
?> F
>
>
U
@ Sb
B
[
A
=B
@
>
U
[A B
CF
@
=K
G
JJ@
@
KR
)
=K
JJ
B
C PF
B
B> \
P@
2.6.5 Iteration over a container
>
G ZB C ]
B P I BK M
TCC F
G BC
@
h
@
B
K
I@ P@
> JC
CK
?C F
[
>
B
PK
O[K
?K B
>
IIK
TK U
K
[
B>
?C F
LK
>
B
# B
=K F
$
[ JJ
&'
A=>
#( [?
F
ZK
%
JJ
h
?L@
?> F ? PK
>B I R
QU >U
@F L
B
OX ] A P@
T
I
F >
A B@ ZIK
I
F L
?L
QL B FF F
G @ Z? JK
^ TZ
P@ K
Z@
?LK F M _
?K
O@K
? Y BR
@C P@
C R@
CF C
?F
B Z
PK >
B KU
II
[KC
?F
%
_
CF
' I U\
$ >
p + si
?=K
@
R
K F O BF
K T P>
C
AL F ? B Y
J@ >
?
>A J> O F
M Z
?C F P>
=@ O
?LK
O@ [
?Y @
> J@
O ?L@
B
P@
KI BC
IK B P@
[ C@
? J@ IK
G@
ZB
PC T
I> U B
L O@
C
?Z F
B
IL@@
A
n−1
B Q
C@
P@
KC
2
T S@
Q
B>
U O@
B Z@
P@ B
O
LK
?= PF [ J @ IA@ ? JK
#
I@ TZ ?C@ K Z@ B@ ? F R @ )
#
[S
BC F ?=@ F K
M [= I@ RR ?K CC
R B ? R@  C PF @ ? RF KC R Re #* j
B
B QK J@
$
P@
K @ G RI I>
@C R > _
C L K
> > U OC
U I
B WT J R@
P@ T C
?F
L@ G [I Z@
L> ? R
[I a B>
=@ IIK =>
JJ K A
[ L
O QK @
I@ P@ I B@
KF
B S O BF
P@ J@ P
CF
a[n-1]
P@
CC
?U
=
?> B F G
K
J
[ BF
?=K
T
BC
>
K
B II
C PF [ K
?LTK ? F
K B>
[ JJ M
U
>
B F IC 
@C R> @ B
? J@
> ?L@
B
? Y B\
> B P@
O ?>
@
BC F >
> ?U
O? F
? J@ W R@
a[2]
==@
R>
@
IC
T=>
?L@
J@
i
LK
>
@
p + (n − 1)s
[
R>
? P@
b
P@
?@
R@
?L F =
>I IK JK
`_ ?
M =@ ` F ?> B F
KI
Q?=> C
IK OKC ?@ @K
I
[C
Q R@ ?@ F [ J
IK@ @ =@
C A J> G C AI _
BF @
JJ R ? \ ZI>
K
ITK> TL
? = B P@ L
P
L@
? RF JK > B IC
M I B@ I P@ O@
I@
` _ ?>
G ` @ ? PK ?
M >
C R@ B R [ B
?Z F P @
CF B
AC
Z>K QK J@ >
J @C J@ F
OKC K ?@ R
B> AL T>
J@
Q PK I> Z
@ > B> P
KC _ L> U =>
K I A
TC T S L JK
?
SC G ZC F
G @B ] K
T S>
aC
B
XTC@
=P
P@
B (
a
0
I?K
BK
@Y
?=>
TC
1
B
IA
B eC
K
p + 2s
LI>
F
g@
T= F K
K I B AC B@
G
I@ J @
K
SK
[R
M =Y
?F
R
I> U
=K F
Z@
B@
KB
R?
T S>
F
B
B
B
P@
P@
?F
B@
BI>
?= P
TR
=K F
=
JF
?> B F
@C B F
B>
>
KU
B
I
IK
C PF
C@
[C
=B
I> U
?> F
K
B
L
>
PK
B
?
L
@
B
M B
A P@
?K
I>
R
=@C
Z>
C
>
I> U
U
@
@
Q PK
S
ZZ@ F
K
a[1]
=@
F
? B F
QZ>
?K I@
R K
O?@ XTC@
@@ ?@
R =@
A B> >
U
I@ RK
I> U BK
LK TC F
I=@ XT SF
? BK F F
T B>
A> G C
@I
K [A ^
?> B F
=K F
I> U M [ JJ
K
J B
@ J P@
J@
RK
?L@ BK
K
? BC F I@
C
B I B>
P@ @
?=> ? R
F
? BK F C>
I@ L@
IK B@
Figure 7:
?=>
?Z@
?D (
a[0]
KR
0
@ R@
?C FF
C
I@
>
? BK F C> I@
K
I@ L@ M K J M
TL OK
C [C ?=>
> B > ? BK
U F
I@ K= I@
B =@C C F
A P@ ?C F ?K
>C Z >
C B S
b
F
SF C@ P@ @=
JF @ B
[ B J@ B
PK
>
U ?L@ B
FB@
?=K
IK G BC
C
? BF
^ I@ B>
QZ> ?> P@ >
I@ [ J B P@
I
K
>
JJ
PK
BC F I @ Sb
@ R = BC
J@ IX@
?L@ T BC F \
BC I@ F @ J@
? D ?L@ ?
L@
B B M BC
PC F P@ ]
? F I@ ?K
I> U C F R
B B
LK PK PK G
J B B
?=>
K
p+s
? BK F
M I@
?C
[
IK
IK
M C@
?K
?C@
p
L@
F
IK B@
B@
Q>
@I
B
P@
@
J@
?L@
G BC
B>
o
n
ml
a
n
s
p, p + s, p + 2s, . . . , p +
bool * begin = crossed_out;
// pointer to first element
bool * end = crossed_out + 1000; // past - the - end pointer
// in the loop , pointer p successively points to all elements
for ( bool * p = begin ; p != end ; ++ p)
* p = false ; // * p is the element pointed to by p
2.6.6 Pointer types and functionality
*
A JJ
M
?> F
B@
QI
TK J
@
CF
B
P@
CK
@U
O[K
>
? UF
R
=K F
? BF
Z
B
PK
B
B
I@ P@
?C F G
>
>
@ Sb
=B
[@ \
B]
B@
Q
R TK
B> J
?> B F ?K G @
[A ^
P
?> F Q C F
KT
I B@ @ J
[A B C F
G
M @ =K
J
>I U ^ J@
R
P@
Q
W@
B
K TK P@
AL @ J M J@ K $$
U )
B I B@ Q P@ ?=> Q IK @ *
K F IC
SJ@ ?> F $
G
CF
B ^P@
Z@ ?T P@ ? F
BC
? F J B@
A J Z@
F
I
K B F ?> F Q
JF B@ TK
@ QI @ J
R K
O F T J ?=K
B G@
P
B ?D
S@
P@
=
IK JK
int* iptr = 0
[
iptr
I P@
>
B
+
# )
(
'
#
* $
'
)
##
]
QZ F \
?@
K
QC J
TK J
@
@ Sb
=B
>
BC
]
QZ F \
?@
KC
QI
TK J
@
?> F
I B@
A
i
?> F
I B@
[A B
@
B
I@ P@
CF
QK
TK J
@
C RF
? BF
TZ
CF
PK
SJ@
I> U
L?K
[A
The null pointer.
I> V
?K
4
Figure 9:
T
F
i
? P@
B
?L@
I@ F
T
IX@
P@
B
MN= BC
O
? JR
>
OT>
JJC
@ Sb
>
? PK
=@
@
L@
CK
P@
CF
B
B
PK
C@
^
P@
ƒ
A
B ?> B
P@ F PK
B CK B@ B
B
I ?
Q P@ L@ ? F >
KI
F O
K F A F K B F K JC
L
J
J@ S JF K F A>
= F ?> B F ?>
F
C F ?=> B
> Q ?K BC
U @
[A B IC K R B>
@ ?> F CC B P
C ?Z F C> F
M ? R> ?L@ @ Sb
?K e
B IB G =B
R OI> XT@
B G Y
^
PK
I F P@
[T> B D U @ >
[T> B @ Sb
P@ =
B
T=>
B? [A B BC F
J PF @C @
R Y
J
OI K > U ?C UF
B@ F T S> S> >
B B B
M B F A> P A=>
B I@ @ F
C PF ?K G R
C F RC
= J@ B> I@
@
G IK
S@
D W@ LIK Y
LK K
?Z F = B
@ [ B J B PK
?=>
QR
Y
T JJF ? F I@
C R ?C> F
K BI ?> U ?
C B@ F F
K I RF I RF
@ @
I@ RR = B = B
CC R@ [ J
?K ?  R@
?
R ?> B FF @C 
R@I
@ B B P@
I?@@ U B PK B
[A
=@ O@K @>
A> I J
@ U
I@K K
R [S
[
G I B> ? Y CK
> [?
F
O Z
I> U B
PK
LK B
II
K
[ ƒC F
R@ >
= JK [A B U
IK @
?> B F G
GC ^
C PF
ZI
T VF
double * j = i
Z
int i = 5;
int * iptr = & i ; // iptr initialized with the address of i
[
[
LI>
L@
B
FU
[
LI>
L@
@
LI>
I@ F
[ JJ
IX@
T
K
TC
T
= BC
@ Sb
>
? EF
=@
j
?C
?> F
I B@
A
B>
?K
double
B ?=>
P@ Q
R@ I@
I B@
[A
S@
?K
B
[C P
=K F
J
B> Q?=>
S@ I@C
B ?> F
P@
KC > U
G L@ B P@
C
I@ B>
QR
TK J
M@
Q@
?@
B
>
S@
C PF AK
?=K ?>
F
B@
I PK I
B>
[ RJ K
S@
=K
JJ@
>
KR S
@b
?=> =
Q BB
I@C ? B PK
?> F F
G T= J
? D C R@
K U L@
M =B
?C F [IL>
=@ =@
J
O@ > JC
?> I
F
[ J ?Z F
K
A=> [ JJ
[ ?
?K >
B
K S@
?
J>
I@ RR
CMNC ?Z F
B Z B>
I@ P@ G
^
int*
B A JJ
S@ ?>
F
I@ R@ B@
I
@I U Q
?@ TK
J
=@ G @
R
?C F @
K
=@ > JC
FB CK
[
@ R>
?C B PK
> B
B
II=>
A@C CK F
?> R $
B> ) $
?K [ W@ G CF
? BF ^
? P@
ZK T
J
I@ RR A J
CC ?> F
B@
QI
KT
J
@
TL
C
B
?T
F
QZ F
?@
>
@ Sb
=B
[S
AK
A
[? J
F
Z
B
T P@
?
IK
[
S
? BK F
AK
?>
>
?=K
@
P@
U ?=K
B ?
O>
[A B
@C
A PK
A
?@
>
S@
R@
? P@
S@
R>
Be
F
B
NMC PF
B
T P>
ZP
KC ]
O@
? R>
? BB@
OI
^
^
P@
[A B
@C
CF
L>
Q BF
K
B@
R
[S
B
P@
I@ R@
I?@@ U
=@
A>
I@K
G I B>
>
AU
?>
F
?> B F K
?L F
ZC
= P@
IK
= JK
I B@
J@
KU
=B
[ JJ
?L@
ZK
P@
?Z F
C
KC
B
L@
ƒ
M
F
K BF
J
KF
B?> F
?D
A> B
G @
IK
^ I B>
P@
JK M
BB@ ?K
I
C R
AL F B P@
[ J =>
A
C B@ LK
B I
O ?C> F
P@
B A>
I P@ I@
B K
P@ B>
K IC
I@ RR
CC ?K
@C
?F R
?> F
I B@
[A B
@
[A
? R@ 
@
R
I> U
?K
IK@
!=
? RF
K
R
?K \
I@
> JC
K
?=K
XT
? D @C
?K F ?> B F
B
K K JF K
F I
K
I@ RR B @
CC ?> F B P@
?K CK
TB
P
NMC K R L@
CC I>
UF ?Z F ?
A
G>
?> F ?L@ B
BC => B
A
B>
C> [
B
L@ Q P@
> TK
J
@ Sb @
M =B K \
C
B TT
P@ C
KC K
C M J
?Z F ]
O
?L@ = PF
B ? PF
B
C PF
=K
C PK C@
B
P@ L@
@ ?K
@ C
= B B>
[
A=>
i = j
>
KF
SJ@
QK
IK
B P@
I@ TC ##
BJ C F )
?K QI TK J B>
@ ?K
> [
U
[A B Q K J
@ TJ
G @
B
PK
^ IB
P@ @
[?C I@ U
C
W BK B>
> B
?K U > P@
K @ Sb
I@ RR G = B
CC D
A> B U
P@
I@K Q J
K
T
I B> @ J
=K C F
JJ >
CF U
[A B
@
M
? B P@
int
@
F
K BF
JF

j
i
?
G R
L@
K
O? F
Z
=>
R@
IK U
Z
?L@
B
OT@
C@
B
P@
K
I@ RR
CC
A>
I@K
I B>
B>
?F
~
==
U A B>
C B@ ?>
? BF F
B
Z G B>
O
P@
B ^P@
I P@ K
AK I? B@ J
?> F K
QB
I B@ @ F
B >U
PK
B QK J@
C? F ?
F
> Z
K? B B P@
T A
A JJ ?> F
?> F IT B@
?
I B@ ?
F
P> B F
J KF
RC JF
B @
P@
K C RF
I@ RR SK
CC h R
> B
P@
K U I@
J@ C F
ZF ?
BF >
LK O K
B@ [
The dereference operator.
int
?
P@
>U
JJ>
B
?D
The address operator.
IV
>
L
( K
A
G ?>
F
^ M I B@
T P@
?
K O@
[I ?=K
Z@
' B
SK
( = Y
B>
)
B P@
>
S
@b
AK A= B
A
>
@ JF ? F
R B@
B>
?K B> R
OF
B
P
B
P@
K
I@ RR
CC
>
?K U
>
@ Sb
=B
>
U
[A B
@
U
double
>
I
(
[A B
@
>
int*
'
P
Z
B
IT> P
i
=
>
QI
U K
[A B T J
@ @>
A
M >U
?F
? B P@ B@
I
B [A B
P@
I@ @
TC [
@F
BJ J
C F ?K RC
>
U Q
[A B TK J
@ @J
G I
@
^ II?@ U
P@
C[? F
Z
W BK B>
B
> P@
KU >
@ Sb
I@ R@ A= B
I?@@ U ?>
F
=@ B@
R
A> G B>
I@K
DU
I B> B P@
=K QI
JJ K
CF TJ
@
CF
>
- &
#
'
'
(
)
( %0
##
#
)
)7
# j )
Figure 8:
int i = 5;
int * iptr = & i ; // iptr initialized with the address of i
int j = * iptr ; // j == 5
p
T*
T
iptr
0
iptr
JJ>
B
OI
B@ F
I>@ U
I@ P@
O? F
ZTA
?>
T>
IA
QI@
T> F
C
=>
R@
IK U
Z
?L@
M B
O@
?=K
>V

„~
ƒ
o
n
ml
BC
@
LI>
=@
?>
G
ƒ„ #
`
‚
ƒ„
0
k+i=n
n
i
? B P@
k+i
J@
II
@
P@
=KC
^
K
CF
K
> B J> J
U @
B O
P@
K ?K R
?L@
@B
C JK
B
B
G [K
IIK
PK
+
K
IIK
[
B I V> c B>
P@ B c A
J@ P@ ?>
U
F
A> B S@ B@
@I Q PK I
?K > F ?=>
I Q
R > I@
„ƒ # U ?C> F
C F B> G
AK S@
?> F R@
?
I B@ @ 
M
B> R
B B P@
P@
@ I@
J@ T
?L@ LC
B
> B S@
C> U ?K
K
L@ II
?F K
[
W R@ >
C> U
L@
? J@
ZB
P
?F M
TC
B =
P@ P
B
B
k, 0
R
=>
\ II@
O @ AC
=K ?>
JJ
B RC
C PF B>
K B
) P@
# TC F
& K B
B
?> F
& O
) I P@
@
„ƒ #
? CF
> AK M
B@ ?>
B F
PK B@
B I
[
P@
KC
A@
?>
k
P@
R@
[
IK
>
?K U
AC F [A
QI> ?>
F
F
R@ I B@
KC R [A B
@
B
P@ J@ ?K
U
A> B I R
@ F
?IK Z P
M R A> B
@
B F ?IK
OF
JJ RC
>
AL F U
?K
J
= FF [?
[ BJ F
B@
S@ ZI
K
Q?=> [A B J
I@ G @
B@
R
B> @=K "
KA JJ
B
?> F PK
B@I B F
T ?K U
?C F K
I
Z c
?> B F
IK
= JK
^
M
P@
RC
? R@ 
@
R
I> U
J@
U
A> B
@I
?K
IK@
? SF
K
[I
K
R
RF
?> B F
A>
I@K
IC B>
^
+ -
M
TC
DU =K P
B A
P@
C@ ?> F
?=> I B@
T
A> R LC
I?@K ? B
>
B
‚ R S@
ƒ„ I R@
@
C PK I?@@ U
C>
LQ@ G =@ R
]
TK J
@
TC
=P
B
PK
B
i
h
?L@
@
P@
k=n
I@ F M
XIT@
P@
@F
B
0
LIK
?
LK
B
?= PF
@
C
F
M R@
?
>
? B PF
Z
(k + i)
i
B CF
B
K PK K
g@ O?@@ a QZ B B A>
Z?K F PK ?
TB
M F G @] C F
C
B@
IA@ ?K F
?@ S@ I
U
B>
@K R
QL> B
B
J@
B K
@ P@
A P@ R M
R
?> F T B>
@
? O@
J@ c
B
B R@ Z@
?L@ @ B P
PK ? K B
B @ A
BC J@
O@ R KC
B> ?L@
Q PK S@ c B
B >B
@ Q PK B P@
P@
c ?@
I
U
LK G I> F
Z F B P@
AR
PB C
R@
K
?> F
S@
\
O L@
I>@ U
B@G I
P K
= PF II
?F
K
GK
TK $J
T= B [
?=>
?
@C
K ?D
@
JJ > U
>
[
I
=
U
?> B F
TC
L?@K LK
J
=P
C M [J
OF
B
B> O@
B
I?K P
PK
B Z@
B
P@ B
R>
J@ AK
LK
B U ?>
FU F
?C F
==@
>
CC
C F I B@
B
S@
F
[J
?=>
A=@
TB
K
J
?>
I@
T
AC F
Q?=>
I@C
?> F
?> F
I B@
RF C F
@ XT@
^ ?I@ Q
F
A P@
=@ K
?> F h ? J@
h B@ B@ B P@ K B
I
K R c C JK C
B [ B BB@ IK U
B J@ I K
P@ I
C
?@ A@ R@
JK = JK B P@
> R =@ IK I@
U ? ?> B F TC
E@ L@
J
= B B Q@ ? B F
?> F => TK QZ
G R@ K J TK
G f I> U B@ @ J
C
>
B
P@
U
LK Y J> M
@C A>
T ? O
C@ F PF C F
J@
> ? JF B ?=>
UK @C P@
II
K I> U I?=@
c [ L@ M @
c A B> > I T R
?> F I U @ R> S
> ?C B
I B@ ZIK G > B P@
B I@
Q?=> L
CF
K
I@C B
T
C
?> F PK
?F B
B SJ@
O@
B Q PK
P@
@
IC  A
I@
? B JF ?C@
@
begin
a[0]
? ?
K F F
T VJF R@
I@ @ = E@
R BF
B> P> ?>
M JR G R>
G
C> ?K f
h
R
O F BF [ S
J
I@ J ?C@ F TK R@ U
TC
J I B F M BJ
? BF @ J B
A [[ I P@
I> T> @K
ZIK II I@
@ K
L A?C> > SC
T
I=K
C C F B@ J
NMC P@ SJF [? J
F
C [B >
BI?K B>
= P@
Z@ LK =C Y
Y
S@ T@C B
Q PK I PK
@ B
I> F B B P@
> PK K
U B Q S>
B B @
A P@ C PF IX@
I> C F T
ZIK B P@ I@ F
M L =K ?L@
C
I> G @ BC
R
?K _
P@
c A B>
c[
K
IIK
^
bool * begin = crossed_out;
Adding integers to pointers.
C F LT>
C I
AL F @K
I
[ J @ JF
B I
P@
K TC RF
=
I@ RR CC
CC ?> F
> ?F
U
BC F E@
IC  ?=> B F
@B G J@ G
?L@ fH
G B B
PK
?B
M
B A PK
I@ P@ A
?@
I>@ U G C
K
> JC V>
?F I
B
NMC P
`_ F
` O@
?K I@
K =K
IIK JJ
[ I> U
int * begin = & a [0]; // address of the first element
L
CC II a
?G> F c [K
c A B>
?> F
I?K b I B@
@
?=>
E Q
T> BI I@
C C
T BI ?> F
A
M TK
B B>
P@
LK
C R@ B
?Z F =K F
J
I@ [ J
> BK Y
U @C
`_ A
M ` JK
=@
T JJF
C O? P@
K BI ?K
C B@
B IK
C PF [IK
[ S AAK
CK
[? @K
F IC
Z ?F
B ?K
PK
B
W@
A
I@
G ?D '
C BF
J
> J B I P@ (
OI> *
MN RC #
B
I@ P@ IK@ )
?
> A> I@K ?> B F # C
?> # IIK $
K
[C hQ@ @ [I ? B PF Z #$
B PK B @O # (
*
)
int a [5];
int * begin = a ; // begin points to a [0]
>U
M I@
J@
TB
C
TC
?=>
OI
G?
PK
R
@
LI>
@U
[B
?K
TR
CK
SF
J
[ BF
KI
@
CK B
B
[B
?C F
>
?@ B
T>
M ZP
?K
OF
A JJ
I>
SK
[ SJ
TB
?I
F T>
B B
P@ B
? J> PK
B
ITZ TK S@
AL F
I>
? BK
B
KU
= B>
IC
?
P@
B@ F I@
TC
? B JF
QZ
TK J
@
CF
^
B ?a
P@
K [K
I
I@ RR IK
CC [
> >U
U
B [A B
P@ @
IC  @B
J@ ?=K
?L@
AF
>B L
U JF
B = BF
P@ [ J
IIK S@
G [K ?=>
Q
I> V I@
W@ B@
K R
AL B>
M J@ [A B
@
O@
?K= G =
?
T
IK@
P
S@ =>
BB@ L
I I> U
B
? PK BK
S
K M ?K J@
L> R
I? R@ B P@
I@
G I=K ? eC
>
Q@ P@
K
I@ ? B F
B G
P@ Z
J@
MNCC T
K B
U B
I B@ P@
QI RF = P@ Y
?F
Z O BF
B P
P@ F
> B!
J
B RF ^P@
LI@ > J
R
I> U B F
L
@
K I
O > J>
P
M J@ F C Y
C
BF >
TL
h
T J>
LI@
>
B eC F
J
B RF
B>
U
L>
[I
L@
B
P@
B
M R
B
P@
TK
B
IC P>
@@ U
J
B
PK
B
B
I@ P@
CF
K
> JC
K
I=@
? BK F
? PK
I P@
>
?>
A@C
II=>
IK
R@
= JK
I B@
BC F
aU
B
R ?> F
B> M
?K B
A P@
IK ?>
S F
BI F B@
I[K I
K
I@ RR PK
CC TC
?F ?
R@
L@ ? 
@
L> Q
[I K R
TJ
I@ R@ M @
I?@@ U O P
=F
?= F ? PF
A
Z I
BF K
=B
?LK@ =@ F
C
B> ?L@K
K C
==@ B
CC PK
B
[
LK
BF
?C F ? F
R@
A=@ @
>? C@ R
F M ( BC
K
I B@
B J
IK P@ @ J
B F IK J@
P
?L@
L@ > B
B F U > BC
= =>
=> A B U
L
L@C T K P@
? B F II
O F Z [K
B
KP OF
B
J> K P
>B R
A U I@ R
F CC
K B U G @C B>
MN JJC
~
TS @ 
M
B R@
O F JF O @
B
T P> IK S@ Q PK
@
B@
K B [ J T B>
?
CK
@ U =K J R@
[? B B J IC
P ? BK
G @ B ?CK F
) R
?
KI B M B P@
?>=
?L F
K O P ? B@
B@ = F
B BP K B
A P@ A P@ B
I> I B P
> CF
ZIK ZI K
K R
L L I@ R
O F PK G CC
B C ?
KP K D
# ==@ ?Z@
C
C I@
B K
P@ M J
A> B P
I@ C F
K K
?B R
' F IR
G $ ZC @CC
[
C
B@ O? JF
J
L >
OF B
JJ S@
? B P@ ? J>
Z
? R@ B>
[ B
K A P@
==@ K
CC I
B
M R S@
TK
B eC F
[B
RF ? F
T= B
P@
BJ
B> ?L
C F
B@ F
M I@ LK
J
C@ C F
K L>
BC U
G
?> F
I B@
IK
BF
P
L@
BF
=
BDeC
J
@ YF
QI RF
?F
Z?K
A
>
F
?K B L@
L>
R I
B@I [
B>
iptr
I@ P@
B
B>
B A=@
K P I P@ T
T S> ?K K B
B R> [ JJ
?IK L R>
K
R> = O
=@ F
LK CC K B P
?
A
==@ >
CC I@ IK
K I
? F ?> B F [ K
M CF
?
B
? P@ C@@ I F
W@ B @K
P@ J
C@ B A [ B F
K
= B IK ? R>
G ?> F ZIK @
A
O
P BF
=K AK P
JJ@
>
R ?F
B@
?> F I
B
I B@ ?C PF
TC F
A
SC K
IA= I
F T BF
? BF =
M Z I JK
AK
I> A
B @ JF
P@ C
T BI
[n]
TB A \
I? I>
?F
SK
Z? SJ
F [
B>
C B P@
?K BI
O>
Z@ IC
B
S@ C
Q PK ?=@
IK
I> F > F
K ]
?K B C@@
[ ?L
BF F
L@ [Z? J
I> I>
?>
?K LK J
[ S@
> Q PK
B
I P@ M I> F
LK T S
?= PF B
@ O
BF
P
B
A P@
>
? B@
K BF
>J
U
int * iptr ;
// uninitialized pointer
int j = * iptr ; // trouble !
^
2.6.7 Array-to-pointer conversion
B
I R@
K
[ JJ
IK=
C
C P@
B
A P@
I>
ZIK
G
L
? _>
C
TC
B@
TI
?>
A P@
Z
F
F
?= F
P@
R
Z
?L@
B
R@
IK U
=>
[P
B
O
? BK
IC R@
?
T B>
I R@
?D
I>
K
R>
I B@
F
L
QK J@
?F
Z
B
A P@
>?
I> U
Z
? B JF
I@ RR
CC
I@
TC
L
I?K
L@
T >
?
B
C PF ? ? F @ Sb
D F M=
=>
K BF B
R@ B P@ JF I>
h
JK G @
BB@ R O P@
I
B
=KC
I P@
M@
BF
P>
R@I
J
@
RC
@I U
C
?@
>
2.6.8 Pointer arithmetic
bool * begin = crossed_out;
// pointer to first element
bool * end = crossed_out + 1000; // past - the - end pointer
// in the loop , pointer p successively points to all elements
for ( bool * p = begin ; p != end ; ++ p)
* p = false ; // * p is the element pointed to by p
crossed_out
n
n
n
// pointer to first element
i
k+i
o
n
ml
< <= >
>=
?L@
RC
*
#
(
)'
# * $ )
$ .- - #
4
4
#
' #
( %
( )
) ) #
* (
##
J@
BU
Arity
[
JK
P@
J@
B
B
P@
U
ZF
P
>B
B>
‚ R
ƒ„
]
B>
ƒ„ #
?K
= BC
C
K
I@
?D
J
M [ BF
BI
FZ
B
P@
ZI@
TC
C
?K
SC
AI= F
IIK
K
A> B
c[
Ac B>
I@
F K
?> F Z I B>
B
I B@ C PF
I>@ U
I@ P@
B
R
?> F
?K
CC
WA@
I@
?K
T BI
?=>
=
?> B F
G
G f
@C R>
?
>
A> B
I@K
B@
?>
IIK
K
[MNC
TS
?> B
A
?> F
B@
G IC
?Q D
>
?Y
F
I B@
BC F
KC
B
c ?@ P@
AR
?> F
G I B@
cB
A
KR
IC 
@B
J@
?L@
?K B
B>
F
\ I> \
PF AK
=P C
@ cB
AL B
P@
J> c
[ C ?@
B A> R
P@ ?
? SF B@ F
K IC
[I >
TC U ]
S B
K BI C P@
= K
?> B F L@
A> IIK
I@K G [K
M I B>
C@
@
K^
SJ@
?> O
J@
BC
P@
^
S@ G
?F
B@
IZ@
P@
CF
B
T^
I> F MNC P
> A
AU >
?
?> F F
I B@
I B@ TC
TC
S
S K BI
K BI =
= ?> B F
?> B F
B@
TC F T JJC
?
C
? R@ 
@ P>
R OK
FU I U
ƒ„ # AK
K
?K I B
R B
ƒ„ # P@
B
IK@ O>K
? II
> [K
B
Q PK
K
G I@
?L@
@
„ƒ #
ƒ„ #
? B P@
M
?K
)
k2 , 0
k2
>
? J@ U
K
ZB
M P
[
IIK
L@
?F
C>
O
I@ P@
[
M
^
BF
BF
P
?> B F
?>
I@K
@
IK
LI>
@
?>
CF
I@ P@
>
K
ZB
P
PK
? J@ U L@
II
TC aC
B
B
?F A
C> ?> F
L@ G IC B@
K
F
? UF
W R@
A=>
@
P@
B
>B
?L@
L@
B
ƒ„ #
J@
R CF
B AK
P@
C@ ?>
F
?=> B@
I
A> R B>
I?@K B P@
@
R J@
ƒ„ # ?L@
B
CF >
KA C U
>
?> F L@
?
I B@ F
W
B> R@
J@
^? ?L@
P@ B
>
B C> U
P@
I@ L@
TC ?
F
J
> B W R@
U
B
P@
% ?F
( B
P@
C
K
L@
IIK
K
[
A\
KC
cB
B
c ?@ P@
AR
?> F
IC B@
K
JJ>
O@
G R]
#
G
n
I
=@C
i
JK
BC
?>
?K R
WA@
I@
CC
?> F
‚
ƒ„
>
? UF
B@
ZIK
J
[A B
M@
B
P@
WA@
I@
CC
?> F
[
E@
?R
TR
=@
?> F
>? B@
F IC
I B@ B>
TC @
J@
S
K BI ?L@
=
?> B F ? BC F
A
M
P@
@
B>
B
ƒ„ #
R T
LC
AB
?>
k1
A
?L@
@
IK
IK
@F
J
RC
B
?L@
I@ F
ƒ„ #
?K
K
IIK
?K
?>
Pointer subscripting, or the truth about random access.
ZF ZF
BP BP
I
f
[
BB@
?> F
CC
I
WA@
I@
P@
]
…
K
QL@
TK J
@
TC
=P
B
PK
B
B
?K
k1 , 0
I
f
Operator
[]
*
&
Description
#
)
k2 = n
TC
I R@
I@ RR @ SC
CC I?@@ U IA=
F
=@ B
K
B
TK J
@
i
M
Q
> BI
A
= B Z@
G ?> F H
>
a IU
[A B BC F
A
K= F C
TJ @
C@ = F
C F C= ]
B> R>
@
R@ ?C
B@I >
B
?L F >
@ T==
B I?
?T P@ F
B
P@
L S@ =>
I R@
>
@ U IK U
J@ Z
?L@ ?L@
B
? BC F I> U
?K L
B
IIK P@
K
[ ?Z S@
B ?? F
PK
B F
C F Z>
QZ F U
?@ B P
CF
C@
k1 − k 2
#
#
$ #
*
I B>
[S
AK
?>
F
C>
@
Q PK
‚
ƒ„
TL
C
Pointer subtraction.
$
#
* $ #
.-
*$
$
+
$
##
)
;)
(
#
(
Table 4:
(
;)
p
p
* $ );(
$ #
!=
K
K
?C F
>B
C
CF
?> F
=B
S
K BI
TC
LF
G I JK
D
‚ U
ƒ„
PK
QC
KT
J
@
TC
=P
B
PK
B
[
?F
IK
n
n
p
QF
K
? J@
B
K\
> JC
?F
BC F
IX@
T
p = begin
I@
for ( bool * p = begin ; p != end ; ++ p)
* p = false ; // * p is the element pointed to by p
A>
1, 000
Q?=>
Q F I@
?@ ?C> F
G
AK
>?
F
I B@
bool * end = crossed_out + 1000; // pointer after last element
ƒ„ #
‚ €
ƒ„
J@
?L@
@
K
B
‚
ƒ„
ƒ„ #
n
ƒ„ #
`
‚
ƒ„
CF
XT@
P@
IIK
F
k−i
\
IC 
@B
J@
[ ?L@
@F
J B
RC \
AK B P@
KC ?>
cB @
?> F
I B@
B>
BC F
R
-=
? UF
? RJF Z@
@ GH
W R@
>
U
B
P@
KC R
G
K
C>
Q S>
=K F
@
Q BF
=>
F
R@
@C B F
RC R
IK U
IK@ A> T B P@
Z
U ?
?L@
@ B F ?> F K
I
R
hB
B> I B@ [? F
B [A B I=
@
P@
A> @K L?@
@I C
K @ ?K B
O
I B> M JJ R
K
B>
I B@
?>
AK
RC
@F
J
−
B>
AK
B@
A
?> SJ@
[
[
n
D
‚ U
ƒ„
C PK
I@
?=>
P@
K^
G
KC
^
P@
C
A> B ? F
Z
I@K ?
L@
IC B> Q B
I@C
?K ?> F
C
R
?K
?=K
R
S@T >
C@ B U
P@
R B
O F O>
B A>
P
J@ I@
BA> U K
I B>
I?@K M ?CK
?L@
R@
n
B B
C PF P@
K ^ K ?>
SJ@ ZI@ A@
@C ?>
F
TC H
O F B@
B R
L P B>
LIK B P@
C [S
@C F @
Gƒ
?
L
B K „? #
P@? B D
F A
@ =C> K
OA I U I B
TF
?> F ?K =
JK
B@ R> M I
c IAC L F
K U
@ = ƒ„ #
= F C=@ I@
C TC
=
? SF I> U J
K IK BC
[I IK I> U
A> [ C L
K ?K
I@K ?C K
B> F II
G IC > BI [K
TR c
B>
=@ c A
R? F ?> F
B@
E@ I
= B Q?=>
?> F
G I@C
G f ?> F
G M
J@
?L@
?@ MN BC
K
B R
J>> ? R
A F
Z
B
P@
?F
B@
ZI@
T
@
Q?=>
B
B
?F
KC
IK@
[ P@
JC
I=@
k
CF
k2
==
@
R
P@
X@ SC
TC
^
CF
C@
R
O M
O@
?=K
T
?
IC R@
? BK
>
OF
B
P
B
T P@
TC
K
J
L?@K
?F
Z
? EF
A=@
I@
=@
? R@
=@C
?K
0
=F
C
ZK
n
n
k2 , 0
@
M
p
AC
k1
*p = false
? J>
k1 , 0
k−i
?
>=
„#

KC
I VF
M CB
B
P@
KI
IK
[
[C
L S>
n
T B>
A G
K
Z@
G f
?>
K^ M
J@ S M
@
B >U
?F
W R@
AR
?> F G ]
I B@ ? EF
=@
B
P@
I> U K
I
B IK
P@
K [
IIK C PK
G[
c ?@ P@
0
F M
OA>
B @
P@
B Q PK
B
K
?> F I J
@
B B@ K
P@ I
A> ?C [ R
F
I@K XT TC RF
=C
IC B> @C C@
?> B F R
A B
P@
?> F I@
?K BB> B JK
?> F
R B K
P@ J
CK A>
aZK L@ I@K
? F > B>
A @ Sb IC
I@ G =
=@ B ?K
? R@ T
B R
=@C O@
?K K B
?= PK
B
R
Z
?C F
F
I P@
@ CF
?> F B> J@
B L?@ = J@
P@
I? B@ ?
IK
BA ?
W
@
K
>
>
B ?
L@ @ J@ F OK
B@ C
R
? R
G L@ B> O@
B C F JJ
\ C h
@ C
G ] B I BK
B> ? B
F
@ ~
IA@  Z
@K \ O B F
P
B
AK
B
C PF
?> F
KC
B@
? J> G I
]
ZK
C ? ^P@ B>
B
P@
CF
O@ I 
RF ? F C
I?@@ I= @ B
@ J@
B
I> U ?L@ L?@
B B
L C \
B >
A P@ B
KC PK
c B A BF
B B M
c ?@ P@ ?> ]
F B
R BC P@
A
i
K J@ G
RC
@
M R
B
I@ P@
TL
C
B
S@
?K
IIK
K
[
>
C> U
L@
? J@
ZB
M P
TC
=P
B
PK
B
B
P@
=F
@
TC
I B@
< <= >
@F
J
] I B@
B ?L F
A P@ @
?> F R
[S
I B@ B
B> ? P@
B B@ F
P@
@ ZI@
J@
?L@ =>
B Lc
k2
I>@ U
R@
S@
AC
?>
OA>
B O P@
C
AL F
[J
C B@
B
k+i
BC
[
p < end
CF
B>
I@
LAK
=>
> JC
K
0
I@ P@
P@
BJ
B
=K F
Q BF
F
@C B F
>
KU
J
I@ J
JK
?> B F
K
A> J
I@K
IC B>
IK@
K
?C
C>
KC
i
?C> F
IK
AL
k1 = n
B
G
=>
I V>
R IT@C
BU
end
?C> F
?=>
R
B A>
P@ @
C@ I?K
J@
ƒ
A> R „ #
aZK @ C F
? I
M F ?K AK
R ?>
ƒ„ # F
I B@
?K C F B>
AK
R > B
? F P@
@
I B@ J@
IK@ B> ?L@
K B P@ > B
JJ> @ C U
>
O@ J@
?K R ?L@ L?@
F
R > B W R@
II=> C> U
A@C L@
?> ? F
R W R@
B>
B
A P@
?F
KC
B
cB
P@
B
K
P@c
I
?@
IK
?F M [
R
G[
IK
IK
L@
CK
P@
B ?K
crossed_out
1, 000
G
=>
P@
IK
AL
B
k1
Z
?L@
M B
M C PF
B
P@
I@
TC
J
>B
U
B
A P@
?> F
I B@
B
QF
?@
=K
G C@
Pointer comparison.
M
R@
=>
IK U
I
?D
T>
A
B K
PK I
B CF
=> ?>
L@C > U
IC  ?K
? BF
R
B G
P@ ?
D
IIK >
K B
[ P@
CF I
B O>
P@ I
C RC
LK ?K \
J
I J@ X R
?> T
@ F
B@
?F
TB
Q B FF
@
M [J
++p
M
_>
?
^ >
P@ K B
J> A
A> K
C
B c BB
P@I P@
@ c ?@
I>@ U
AR
>
@C R> ? F
B@
O I
PK X@
B T
O@ QK F
O?K ? J@
h B M [ BJ
F K
C@ B C
BC ? J>
K
JJ ZK
IIK C
K A
[ >
@ ?F
J@ BC
?L@ B>
BC ?K
B> K
~ T=
B
 KJ
IIK
K
[
@
J@
?L@
G B
0
M
BC J
?F A
L
K
B ?I F
P@
T> U Z
I OA> B
A>
>
I@K ? F
B@
IC B> IC
B
PK
B
? R>
?K > B
R L@@
B
B
P@
K
Q S>
@
XIT@
I@ F
TC
I@
++
+=
--
k
−
[]
p
end
n
Prec. Assoc.
H
o
n
ml
new
delete
ss
sr
sq
JJ
s|
[
O
LI>
L@
@
=KC
P
= PF
MC
?F
KF
SJ@
IK
Q B>
@ BF
R
K
@
{
r
rz
M
JJ>
B@
OF
B
P
@ Sb
=B
>
?K
K
O@
I@=
?> B F
=K
ZP
TC
=
?K P
K
IT> ^P
rx
rw
ru
int
OI@
@ G
C
?@@
C>
IK U
Q PK
B
rt
rs
Ba
rr
J K J@
I@ F C
\ ? BF
M
B
C PF
I@
AC
@
M =B
K
M IIK
[
?K C
K
R I@
?
>
] ? BP
Q PK F
@ ZAC
B @
A P@ K= F
IA> M J
B
I@ T P>
[B
GZ
B P
PK
K B aJJ
?C F [A B
Z J@ @C
> B
PK
@ Sb B
= B O@
>
U
B Q PK
P@ @
I
@K B
L@
rq
G L@
r|
C
g@
SK
b L
ZIK
I>
B>
=Y
TB
C
Z>
{
q
B ?
S@ >
T=K G O
C@ BC D
B
P@ L?K
? J@ F
Z B IK R
>P O
?K U = SK Y
IIK C F
K B
[ PK
B
C PK ? B P@
B> T
S@
? Y L S@
> I
O? C F
K
B PK
=> I
AL O R
I@ F
J@ F R
ML
T
B
AC PF
I>
ZIK
?F
B F KC
qz
n
st
PK
O@
B
M
[A B
?D
@
I@
>
C
T
` _ BI > A==
` = F @ Sb
@F
B
KI G ?> F ?=> B CK
IK
W
[C
@
?LK R
K
O
[
A TL>
C@ P>
JK ?
? J@
>I B U > B
U
ZB
G LC ] L@
P
CF
L>
R@
[I
F
B
I B@
P ?Y
IIK ?>
?L F
K O
@
NM[C B>
KR
?K
B
IT? B
> P@
Q S =>
BF
T> F AL
L@
?C J@ F
?K=
@@ I
\
R I> U
S@
IK W @
>
C@ F K
C A
BK? S
B> M L J@
F
@
IT= F R
=
B
IT> P
QL BC SF
?@ >
U
Z
B I
P
B ?K
C PF
int unsigned int
= BC
@ Sb
( (
C
IK B> Z@ TR IK $
$
?> B F (
G 1, 000
BC
KC
Z@
?> B F C
?Z F
TK \ @
B> B> R
LK B
B F P@
?=K L
?K \
CR
BK R
B CF
=C F I U
@@
IK B> R
K
Z@ ZK
TR ?F
IK ]
K
?> B F A B
M I
@
E@ R@
= B@
?> B F I
G ?L@ F
G
H
G ] A R
?> F
BC
@ Sb T
= BC I? R
> F
U ZA
[? R I>
K ZI
K
LF
= L
W@
T@=
qx
2.6.9 Dynamic memory allocation
su
C
KC
C
B>
?Z F IK
B?> F @ Z@
G
R T
B> I R
K
^ B
A P@ P@ ?> B F
I> L K
] I
ZIK ?K ?@
>
L R B
LI@ @ RF B
@F
?=K
R
\
Z@ Q B>
R@ B K
I B@ B P@ IK F
?L F I F S
NMC J@
@
B L@ ?K
C P@ L>
A@ [I R
B
?> F I@ U [ P@
@
Q BC R ] LK
KF K [
B C
BK
?K A I
B
R ?> F B>
Q JF
T BR @
I
WA@ ? F Z@ \
I@ ZA B
CC I> L@
?> F ZIK L>
I
GC
L [
W@
T@=
qw
qu
Q@
?@
FU I@ †@
IK@
qt
qs
qr
qq
II F
SJ@
@
Q
B> O@ C F ?K J@
AK ? R>
A
O B
[ J T B e I@ P@ I> U
C C A
? BK A@ ?> B P@
> F K
I RK ? F I B@ Z> J
R I B@ C I F
J
=> B
IK SF ?C F
P
I[ T> L?@ G L
F
K I h
ZI> J ?> B
O [ P@
BF
P => IK
LC M R@ @
B>
B
P@
IIK O@ F
K Q PK I B@
G [C @ K
B>
B> IC
?Y >
> I@
OK @
R
T S> [ S
B IIK
B K
P@ G [
C
?L F
^
I> I P@
R@I @> U
I
B> M @
K
S@
q|
B>
C>
?=>
P@
h
Z
[? J
I R@
{
F
F
WA@ B
@
= BC
B
T P@
?
O[K
B
C PF
CY
?F
P@
OI>
B
= F ?=>
=C  ? BK
> F
U @
B I
P@ B>
?=> >
@
? BK F I
I@ FBC @ JU #
AC
@
G B
A=@
^
O@
c JJ
? R@ 
@
R
F
IK B@
I B>
L@
Z
I> U L
?L F B@ JK
I
?=>
]
z
x w
y
?> B F
? a =@ K
[ CC [ B JF
RK @ BC F >
BKcA G JU UF
IK B@
I>
? BF
=@C
?C F
QZ>
ZK
I@
JZ>
BC F
I
@
FB
J@
P
?
L
@
L>
G BC
U
B
P@
^
P@
`_
?>
`
[T J
C
?
? BK
F
I> U
I RK
L
R
[ BF
J
IK SF
O?@
[I
@@
\
O@
R
C
? FF
OF
J
C@ J
B
P@
@
C>
F
IK B@
L@
?> B F
>
U
I>
A
SJ@
R
J
F
u t
v
?U
c=
T
? BK F
I@C
B
PK
>B
I@C
B
P@
?=>
I> U
C
>C
A S@
T P>
C]
@F
QL>
QK U
I> M
B@ F
[T>
I
JK
[C
A
s
r
q
RK
BF
>
?F
ZIK
I>
A
bool
}
return 0;
delete [] crossed_out ;
n
B>
I@ U
@
B G
P@
[? R
K
LF
=K
[ JJ
K
JJ>
=K
B@
R
IC
L S@
T
L?@
I
A
F
2
@
Q PK
S@
R @B
O
?
[? R @
K
L F ?K
=K
[ JJ R
K
JJ> G
=K
C B@ ^
?K P@
>U
IIK JJ>
K
[ O? F
> QZ
? J@ U IK
?K F
ZB
P IB
@K
RC
^
P@ B
I@ ? P@
T
L?K
F L
S@
I R@ I
>
U IU
B >
P@ L
?K B
AT
? RF
I RK
C
? BK
B
B
PK
P@
F
PK
P@
J
B M
B
B
K
T= B
K
LI>
L@
C>
AK P@
K
B
CF
B
I@
E>
[T JJ
C@
[
O
G W R@
[? S
@
I>@ U
>
? B@ U
C
B
T JJF
C@
F
IK B@
?> B F
I P@
O@
J@
CC
O@
IK@
?F
T
? F QK
F K
K B F JK F
J[ J S
T J@
?T
B>
C@ C
B>
R I
TS @
B [? R
O? K
P@ L
F
?K =K
JJ
[
> K
@ Sb JJ>
= B =K
C F B@
[? R > R
K @ Sb
L F G = BC
=K
[ JJ ^
K P
JJ> C F
I
=K @
B@ Z?> F
R
BF C F
C F K=
J
? S@ F J@
R
ZC B P@
B>I @ G
?> R )
B BD
P@ C F
LK Y
@
F
IK B@
?> B F
B I BP
P@
I@ T>
K Z
J P
L> ?K
W @ U IK
IK
@ BI [
K
L@
[ J B JF
B F B J@
c L@ L>
I= I@
BF @
=K F
J =
J>
A> ?@ F
MNC B
B
B ? PK
P@
QCK B@ F
? F IK
ZC ?> B F
IK@
[S
LIK ? F
?Z F W R@
G
GK
J
T
I V> B
R
[S
e B
Q@ EF A P@
G @ I>
ZI
@" K
L@ LZI
L S@ > M
I G OC
B
PK
B
O@
O?K
B
B
P@
C JF
>B
U
? B P@
@C
C B>
K pI
I> U
CY
C PF
OI>
O
>
@Y
CK
P@
B ?
I@ U
K
RK
SF
J
M [ BF
M
I@ †@
CF
P>
Tb
C
^ B F
P@I =K
@ ?> B F
IK@
K I> U
T= B B
K A P@
[ JJ ?>
B F
O> I B@
Tb
C ?=>
BF
A=@
=K 
B
?> B F k
MNC
?K
AC RF
?@
CK
SJ@ R
?>
I> U @
Z@ > U
? BB F B
P@
AZ L
IK O
F
= B JJ
F=K S@
J C RF
IIK T=
K C
[C C@
R
OF IF
B Z
P? B P
J@ K
Z B O[K
P
? B Y ? B P@
> W@
O?
K C@ B
B
=> ?=> B F
AL
hA
J@ F >
BF ? F
G L@ I B@
C
IK@
?F
?
?F L
CF
B K
P@ C
?@
G > S@ U
R I
M@
W@
A=@
B
B
PK
B
O@
WA@
J
= FF
B[ J
Z@
IK B>
C
K
[ A BK P@
I V> G C I G I@ ^P@
>
W@
C
=@C I a @
K
AL
?C F [IK ?=>
C
J@
ZK IK T Rb
?
JZ> @ C
I [ S B F
? RF
B F K U =K
ZK
P I B
MNLC ? ?> F
>
?=>
O@ BB ?C F
BK?
C P@ >
F
T P> ?> B
I@
[
@
J [ J @B
R
J@
B ?=> ITK>
?L@
I@ P@
?
BK
B
>U ?F R
I
@ I@ B
OF
B
C P@
KP
LK Y > U
I
@
I?>=
QZ F
TC C@ @
?@
I@ BC M I
A
> C
IA>
B U >
PK RK
B G BK O@
I@
B
[B
OF
[ P@
J
\
?> J
QL>
>OI ? P@
[J
Y
@F
O@ I S
B
F @F
K P@
?> AL [
I B@
J@ B>
T
[J
B
>I U ?L@ =
PK
B
B P
IIK
C>
C PK
n−1
[I
L>
L@
[A B \
=K F
[X JJ
T
B@ F
I JK
Z@
I@ ]
Z?> F
>
U
B
P@
=>
ATL
I B@
eC
L?K
F
L@
L
ZIK
I>
A P@
^
IK U
F
C@ B
@
LC
B
PK
B
B
P@
?>
[T J
C@
>
AU
?> F
IC B@
CF
B>
E>
What have we gained with pointers?
n
// Program : eratosthenes2.C
// Calculate prime numbers in {2 ,... ,n -1} using
// Eratosthenes ’ sieve .
# include < iostream >
int main ()
{
// input
std :: cout < < " Compute prime numbers in {2 ,... ,n -1} for n =? ";
unsigned int n;
std :: cin > > n;
// definition and initialization : provides us with
// Booleans crossed_out [0] ,... , crossed_out[n -1]
bool * crossed_out = new bool [ n ];
// dynamic allocation
for ( unsigned int i = 0; i < n ; ++ i)
crossed_out[i ] = false ;
// computation and output
std :: cout < < " Prime numbers in {2 ,... ," < < n -1 < < " }:\ n ";
for ( unsigned int i = 2; i < n ; ++ i)
if (! crossed_out[i ]) {
// i is prime
std :: cout < < i < < " ";
// cross out all proper multiples of i
for ( unsigned int m = 2* i ; m < n ; m += i )
crossed_out[ m ] = true ;
}
std :: cout < < "\ n";
// free dynamic memory
f
o
n
ml
B@
F
?@ G
NM=C@
TS
B
OF
B
T P>
B
I@ U
@?
F
TZ
?T
C@
R
XTC@
?=>
K RF
L@
L
>
Q PK
?@
aJ
JJ
L@
M [ JJ L>
I
BF [
CQ F K J
@ J>
[I =K B@
SK R
AR [S
IK AK
= B I>
=@ F ZIK
B>
I@ LC F
[ J TK
?> B>
B LK
C PF B F
K U =K J
=B [ J
IU
I> U @@
I@ U R
?@ F O?
P@
Z
LK
I
?L F B
K T P>
B@
?C Z P
> K
I B@
L
Memory leaks.
[
IK
IK
C
?L@K
?>
CF
I@ P@
B
M
>
B@
MNIC
B
P@
F
OF
A BP
?>
[J
U KC
R@ ?
B@ F
?= B F Z J@
>
TZC @ Sb
G
=P G =B
@I
I> aC
G IC K J
O[K
C
[
?K
I
?K
> B O P@
@ I@
>
?C
@ R>
Z@
K
K= F
I> U
[ JJ DU IT@
K B GC
JJ> A P@ @
=K JK
B@ ? F ^
R
C PF
?C F
A PK
A
Z J@
> C F ?@
C
@ Sb AAK ? F
=B
J ?J
B @F @F
P@ R
B> S@ K >
Q PK ? U
?> I
I> F c ?T >
ZI
TC F A JJ K
?
> L
R@? ? F G H
 B@
@ I
R B PK
^ B
P@ @ R>
KC ?C
L@ A>
B
CF >
T BI ? F
@ B
F B>
?> U K
@ [? R
BI K
@C F Lc
J@
@
B ?
P@ L@
U
>B
?K U
K
CC IIK
[
G ?> F B
PK
^ B
P@ C PK
A
O I
P> Q@
J@
T> F
L@ C
L> [ J
[I ?@ S@
>
T== ? R
A [
@F K
R LF
[ S =K
B [K JJ
P@
IIK JJ>
K =K
[ B@
ATC F R
OF
B BP
SK B
= Y P@
?> B
I PF
B QR
P@ K
I
AK P@ ?K F
B
WA@
I@
>
P@
P@
WA@
I@
B
M
U
?=>
QR
IK
?K F
>B
C@
B
?D
S@
B
IC 
B
?> F
I B@
B>
B
P@
AK
C
‚
ƒ„
TL
?> F
CC
delete
^
TZ
B>
delete[]
K
[ JJ
[T P@
TC
ZIK
? JK
`
`_
OF
B
P
G
B>
P@
R@
J@
U
LK
>
?C
@ R>
BB@
B
?> B F
>
I R@
I>
^
[? R
K
LF
=K
JJ>
=K
?> B F
I
U I P@
M@
TS
B
?LK
[A
I>
h ZIK
D
[T> U LL@
? IC
@@ ?=>
R CF
T B> I R@
?
BF
R> J>
Z
B F
O> =K J
A
IC  ?>
TB F
? B@
IC
R> ? F
B B
P@
C@ ? P@
?=> Q F
I@C
CR @
A B@ I>
I R@
>
C
A B@
MNC
[T>
G
?K
M R
>
R@
@@
IZ?@
? J>
?
IK@
OI
J
B@ F
R
M R
O@
OT>
MN@C
=KC
?D
K
JJ
B@
B
R
Z
P
IT> P
=K
K
JJ>
‚ € GGG \
ƒ„ ]
…
new
Q
^ T> F
P@
C
I V> =K @ [ J
W @ ?> B F @
K C = B ?@ S@
AL ?> C F
M J@ B B> [? R
K P@ LK K
Y
B
AK G AK P@ @ L=K F
B
P@ [ JJ
?> F
K
? BF
II=> JJ>
@AC =K
B
?> B@
A P@
I>
? RF O R
F
IZK
Z BP
B
L@ P@
L
L> I 
O
P@I
[I C B
@
Q K I>
K C
B
P@
JK F ?@=>
B
SJ@
O>
K QR
Z?K IK
F ?K F
>
I> U > B
@ Sb
TC U
= BC
B
XT@ SC P@
[? R
K
?@
W@
LF
B A
=K
I@
R
?
[
[ JJ
K CC
K
?> F
J
LF G
c J>
=
[A B B
@ W@ P@
A
B I@C
PK C
B ?> F
C PK I@
T
?@ S@ ?I B
C
[? R ?K
K QI
L F TK J
=K @
[ JJ >
K U
JJ> [A B
=K @
B@
G ?> R
D
B Q BC
P@ K
T
P@ @ J
G AK C F
B
^ P@
P@ K
> R
@ Sb I@C R
=B C
U
>
?K U
>
@ Sb
=B
>
?
@
>
?D
S>
delete
B @ B
I P@ G = B Q P
IK
O
?K F
M C@ F
?F
M BC
‚
B
P@
ƒ„
IC 
QB
K
[L
IK
?K F
S@
M B
?TK
‚
A JJ
ƒ„
TL
?> F
C
B
M I B@
S@
?F
AK
O
?> F
P
= PF
I B@
=KC
B>
@
K
C?
B
F
P@
Z J@
>
@ Sb
WA@
=B
B
I@
PK
B
CC
PK
?> F
AC
I
C PK
c@
B
I@ P
Q@
IK
?K F
G BC
B
P@
U
>U
JJ>
>
O? F
Z
[
?F
?K
=>
L@
?=K
?> F
CC
WA@
I@
M K
[A B
@
[
I> V
?K
€ 
‚ … ‚
ƒ„ „ƒ
G
M
R@
>
B@
B
B
B
PK
Q P@
A BF K
>? IK F
F
BC SJ@
B>
B
P@
IC 
@B
J@
CF
L?@ ?
>
B>
OK
KU A
>
[? R ? F
K B@
I
L F IK
=K B
[ JJ I P@
K
JJ> ? B PK
=K
B@ ?K
KI R IK
IK IK
[ [
> K
? J@ U I B@ U
Z B B P@
P
?> B F
=
IK JK
^
P@
^
B
QO> G
IK
?K F
G BC
?F
L@
=>
[ P@
G[
WA@
I@ M
CC
?> F
C
BK
@Y
I=K@
>
I@ UU
?@ F
Z
L@
IL>
delete
Z
I>
A P@
B
O@
e
IK R
B
IT P@
C
Q@
IK
KF
S
C J@
delete
G
R
JJ> [? R
=K K
B@ L F
R =K
J
L@ [ K J
L> JJ>
[I =K
B F B@
CF R
CK L@
F
R L>
B> G [I
Q PK D
@ AK U
K
I>
ZI
K
L
R>
$ @C
?
! >
T E W@ B
A
=P
JF
K J@ Y = B JF
C [
I
IK@ @@ U
> K
? B@ U JJ
[? R
K K
C
?Z F L F
=K
> [ JJ
U
K
J
M
int * i = new int ;
int * j = new int (6);
SK
[A B
G@
BK
n
=>
? RF
RK
0
?L@
?U
T
K
CF
FU
// i is undefined
// j is 6
B B
B CF
C PF ?
CF >
B ? J>
P@
=KC ZI?@
G@
@@
R@
[? C R
K T P>
LF J
= R
PK
R
int
B
@
// * i is undefined
// * j is 6
F
[
new
j
n
i
F
K BF
JF
?F
int
?
T
new
OF
B
P
B
P@
K M
I@ RR
CC
@C
>
U
B
O?>
@
O>
@ Sb
= BC
>
U
[A B
@
I> V
W@
K M
AL
J@
B
P@
>U
JJ>
O? F
Z
R@
=
IK JK
?> B F
C
?F
F
K BF
JF
@
B
Q P@
KI
KF
S
C J@
K
?
JJ> ? D @ BC F
D I> JU
K
T K= B@
? U K B IZ ?CK F
P@ K
RK # I  L ?>
?L@ $ C B M H [
?K
TL>
BK >
J S R O@ NMC
[A B @ b C@ =K T
@ => B ?=> JJ S
BF B
O [A B U Q R
OT@
PF
Q J@ @ IK
TC
?K F
K
IK ?> M
?K F
[ JJ
B
B B B G C B>
I@
? F P@ @ P@
K P@
B
BK FF G A @
P@
=B
JF
I@
>
TC
C@ IK $ U
B ?K F B
? B JF
? P@ B P@
@ ZK
O> QK J@ W@
I@ RR
@ A
C
@ Sb C I
TC
= B B P@ C@C
?
O F > ?> F
B Sb
I R@
P @ CF
QK
O T= B
PK ? B>
IK
Q B@ ? F
KF
@I F [? R
SJ@
AK K B F K
?
A JF L
K
F
@ @ =K
IKC RF [ JJ
G L@
U
C F
crossed_out
M
?
S> A F
B K
> P I?@
U
[A B B
@ C@ P@
GC
new
?L@ G
BC
I@
?LK F
T
"F
Z
B F ? BP
C= >
IK B> M O
F
Z@ U
T R O@
IK O?K
?> B F B@
?K B R
R OT>C
OI
B@ F => P
@ Sb
= BC
>
U
[A B
@
LK
B>
int * i = new int ;
int * j = new int (6);
J@
@
K
int i ;
int j = 6;
LF
=K
[ JJ
K
JJ>
=K
B@
R
L@
LI>
K
The delete expression.
K
II
n
[
TK
int*
[?
P@
M KJ
B
TC
T aC
[A B > U
@ B
P@ >
@
I@
?F ?>
?F
? JF
W
@
B
@ P@ A I B@
I@ @C
> f AK P@ CC ? B F
U G ?> F Z
>U
I>
C F IT
ZIK ^P@
C
I B> C
L T@ B [? R B F
I?
H Q K P@
B
TK J L F I PF
K
=
@ J QR
C F [ K J IK
B JJ> ?K F
P@
G
K =K B
D
B@
I@ RR ?K ‚ U
CC
ƒ„
> IIK
U [K C PK
B
P@ > ? F
IC  ? J@ U B@
IZ@
@ B Z QK
J@ B P T
J
@
?L@
G B O
BF
^ T? P M
PC F
B
C F I R@ P@
@
O [? JF @
PK
B Z =B
C@
O@
The new expression.
S@
I@ U
G@
R
?D
`_
M `
B
A P@
I>
IZK
L
LI@
R@
=F
C R@
K
B
O
PF
A= P
?>
crossed_out
new
new
new
new
n
2
W@
SJ@
F
B ?L
KF
C B@
BK M TC
B ?
=F
L@ CC J@
L> B
[I [ P@
T S IK
@
? B F W@
A
I@ J
TB =F
I? [ B JF
F IU
K B G @@
JC> R
Q? F [?
Q> J K
@C L
C> =K F
[ JJ
L@ K
K JJ>
R
?L F =K B@
CF R
K BI L@
Q BF
@ LI>
@ [
I> C F
B L>
I@
? PK
-#
#
}
#
)
Program 14:
delete
delete
int
// * i is undefined
// * j is 6
delete j;
delete i;
new
delete
AL F
@C JF
B
PK
B
[? R
K
LF
=K
[ JJ
K
JJ>
=K
B@
>R
@ Sb
= BC
Q JF
T@
?
BF
J
B
A P@
I>
ZIK
L
B@
cI
TR
IK
?> B F
Z@
C
IK B>
o
n
ml
B@
M
’l’
IC
= B@
IK
= PK
>
K
K
II
U
B@ F G
P@
R@
B
?=K
S@
R@
J@
R
? RF
?> B F L>
=
IK JK
M J@
AL
K
W@
I V>
=K
C
G @C
S>
B
P
? R@ 
@
R
? EF
=@
K
JJ
aE
DD_
=
IK PK
=
IC B@
Q PK
@
?F
B@
ZI@
AL F
J@
?L@
BK
?> B F
> BI
P@
[T>
CF
A ^P@ O?K M
?K
I?
F =K B
B@
R
B@
BC F
R ZI>
Q
[ B> K
^ > U S@ T J
P@C AC A @
@ @ I? C F
IK@ K= F B@ F
J
= M R K\
OI I PK [T> TCC
F K
? BB@ =
?
IC B@ TL L F
C
Z
K
OF
B > JC T B
PK ? C@
F
B
K J@ T= J P@ ?@
? RF R@ WA@ =>
C
Z ( JF ? RF
=F Z
SK
B ]
C= Y $ Q?=> ?K
C JK ( @ R
P IC B
?K ( ?> F PK
B eC
R #
O
B
PK
P@ B
B
PK
Z@
L>C B
B C G A BC
I?
AL F >
F
>I L@
G B@
B
?
R
? BK PF
DU
B Z
O?
R@
B@
J@
I@K
?Z@
@
LI>
I?@
A
U I? F
RF
@ BC
>
L>
B@
B>
>C
=>
P@
U
B@ F
B
CC
?> F
WA@
I@
AL
RC
’a’+1
B IK
P@ @
R
B
K= F
[ JJ
A S@
I>
LK
B>
OF
J
TK J
>U
M I@
B
P@
[A B
@
>
U
B
P@
WA@
I@
CC
?> F
I@ P@
^
>
M
B
J [A B T S
[A B @ B
@ NMC B F
B R>
P@ @
> J@ ?C
U B U G Be
B A>
P@
I I@ ? EF
Z F ?K =@
P
A> B > R B
P@
I?@K [A B U A>
G @ I@
R
?K
K
G IC F
ZA
B
?= PF
LK
?> F
C
C
T P>
J
KR
J
O[K
C
=>
L@
?F
CC
WA@
I@
R
char
text
L
ZI> J
BF
P
KR
[
?K
? P@
OI
]
?
?=>
J
L> =
R AC B IK PK
G
B>
B JK I= B@
P@ > B U
C@ I I> U
T
> B NMLC C
? UF K C F
B@
ZI@ Q M
C TK
J
@ OP
> =F
T== P
A T=K
@C F C@
C
K
?
S
\B BC F @ JF
P@ >
C U IS
?Z F L@ @K
G Y
@
R LI>
M
=KC [
@
] O
I> B P@
B I P@
P@
C@ B
B Q P@
TK J
@
?IK
Z@
?>
A@C
II=>
8
{−128, . . . , 127}
=K
G
?> B F
IK
G
B@
? RF G
?C@
I@
S@
IA@
[ P@
?=K
B
CF
TK J B \
@ T? P@
?C F C
?Z F
@
R
=KC
@
’b’
C PF
BF
G
R@
= JK
4
Q BF
@
@
J@
?L@
BC
Z
’b’ ’o’ ’o’
T=
char
AC>
m
C@
char
?=>
?L F
K
? BF
M
Q
ASCII
@
U
M ]
O@
?=K
C
AL F
[J
K
XTC@
?@
=@
>
U
=
IK PK
=
IC B@
?K
B
CF
W B@
a
Y
98
C
IM P>
B
TS
B
BF
LK
[
S@
=>
L?@
F
@
c
E@
OF
T BP
?
I R@
[? J
F
Z
[A B
@
[
?K P
IIK
K
Z
B
IT> P
`
`_
@
F
K BF >
JF OI
@
O?K
?
int
CF
BC
@
?=
Q>
?@
?@ F
[ BJ
LI>
R
Q BF
@
[J
?K \
K
I? B@
aJ
? R@ 
@C
?K
IIK
K
[
>
? J@ U
ZB
P
B
PK
IA@ B
I@
?C@
BC
B
P@
W B@
B
B>
R
?F
C@
T S@
’\n’
char
>
I>@ U
B
P@ M
I B@
S@
_
From characters to text.
G ?>
BC
P
C B@
>
SJ@
JYF
?@ F
XT
T R>
int
C> R
J@
> G
@U
?L@
I
= B@
NMC PF
P>
QO@
M I@
CF
XT@ QF
K
? J@
B
B>
B
P@
>I U
LI@
^
Z
^
P@ M I PK
? JF ] K=
@ B P@ I B@
C
?F
T= J
#
R@
U
C@
? RF
= J>
?@
IC B@
=
IK
= PK
>
=@C
?@
XT E@
’b’
LI>
Z
U
W B@
M B M
?K
P@
2, 3, . . . , m + 1
B
L S@
CF
] ?
CF F
TK K B FF
B> JF
@
LK R
B
=K F O B F
[ JJ K P
AK C
A ? BI
?@ F
Z
R@ JF
R IK B@
B> M J
B B
P@ P@
KI B@
IK I
[ ?L
KF
^ ? BF
C PF
Z
= IK PK (
=
I B@ (
@ R> ?C >
B
II=> > \
A@C ? U
?> B@ F
R Z@
B> QI
?K TK
J
[ @
0
B K= J I
P@ T J
IF C G
? J@ = P
?K
ZB K
P II
K
^> [
Z@ B
B &
C PF ? J@ M
R@
Z B P G M I= JK G
K
O@ ?
?K B
C
?> F
FA JYF
R M
L ?@
B
[ J I>
M
P@
?K IK
Q PK LK
I
K
@ KJ
R [
B> II
B
K
P@
F [
IK B@ M C

BU B
B@ I@
@ P I@ P@
Q> c >
J@ > U
I@ I B@
?L@ I@
B ?L F
B PK
P@
CF C
KI K B@
IK
B ? J@
P@
[ IK R
ZB
?K IK
@
I
[C
G P
>
R
@
A
^ I? F
P@
BK
IC  S
B J@
T> U =
I IK PK
@
J@ G = B@
I
?L@
BC aU
B@
IK@ I
B
P@
M
JK
BB@
I
?> F
CC
P@
WA@
I@
^
G
JJ@
#R
=K
$
G # $
{0, . . . , 127}
>
?T P@
B O
B
IK
= PK
J@
F
ZJ
F
IK B@
J
?=K
OF
? B PF
T>
AT B
W@ B
A
I@
CC
?> F
MNC
TS
B
O@
?K=
JF
IK B@
JC
?>
[J
Z
F
IK U
O@
Q PK
T@
C@
CR
? BI
E>
IK@
Dynamic Storage Guideline:
I †@
@
B CF
P@
?K
IC 
B AAK
I>
K JF
J =K
> J ?> B F
T==
II >
?@ U
K\
=@C IIK
> [C
KU >
QZ F U ]
?@ = PK
C@ IK
IK I= B@
=P G C
C
? BI F 1
TZ \ TC
K (
[ JJ C I P> CF
? BF] B
K A P@
QZ F I>
?@ S
J@
W B@ L
>
B U
Z
? RF
?Y
>
char
’a’
C
Q> S
T> F G
C
C
T> J
?> B F
CF
B
P@
>U
JJ>
O? F
hZK
TCC
?L F
Z
B
PK
B
B
P@
C@
KI
=P
C
? BI F
Z
C PK
? J@
ZB
P
P@
for
^
?
T=>
a
P@
?
[
P@
char c = ’a ’;
T\
TC
K
[ JJ
? J>
Z]
B>
BB@
B
0
C PF W B@
K
ZI> J IK B
@
B F =K
P
L JJ@
CF
KC U K R
KC B ? J> G ZK C
B
P@
C@
KI
=P
C
? BI F
B
for ( char c = ’a ’; c <= ’z ’ ; ++ c)
std :: cout < < c;
T> U O @
?
R A=>
I> U LK
C> I@
L@ B F
@ =
J@ I PK
?L@ K=
B I B@
O@ O@C F
C
A B> O
F
?K B P
B
? R P@
W@ @
J@
B
=> ?L@
AL BC
IK@
B
P@
C@
KI >
= P BU
C P@
? BI F W B@
Z G B
OF D
B KU
P
B
P@ L
@ CF
J@ LK
?L@ = B
P
BC C F
P@
[A B
@C
B
I
Z
? BF
@
?C@
OF
B
P
B
P@
?L F
>
B
I P@
?=>
W B@
BC
KC
G O@ J
J
>C
?B
>
BK
M [ SJ
K
C
? BI
std :: cout < < " Prime numbers in {2 ,... ,999}:\ n";
abcdefghijklmnopqrstuvwxyz
^
?F
@
?>
L
L S> G
J
IK@
?
@
=@C
C
IK
K
T= B
K
J
=
IK PK
=
I B@
[C
?K
`M IK
I
B [K
P@[ >
U
IK@ (
L> (
R@ J@ G #
R
[S _
B I PK
P@
T K=
? U B@
I
RK CK
?L@ I@
BK B P@
J
[A B T S
@ JF
? RF
Z
B SJ>
PK = Y
B C
O@ >
U
I S W B@
@F
[ KC B
R
TC= F O@
C ?Y
?C >
W@
G B G OF
B
?D
`_
2.6.10 Arrays of characters
B \ ?=@ F
P@
B
I> U
? J>
& Z
C@
IK
# =
& CP
? BI
F
C
$ Z
C@ \
@
W p
@
] I
B =@C F
PK
B
C F G f ]
K
J
O[K ^P@
C I@
KU
G C B CK F
F
I@K
IC B>
I> U KC
?> B F
L>
A>
L@
QR
TK J
@
?K
M
R
B IA@
P@ I
^
Z
R@
S
Q RF
B>
A
a
C@
J@
I>
AK
C B@
?
ITK>
C B@
>
XT P@
A
?C@
JK
G
P@
char
ASCII
BB
PF
Q@ R
?@
A
>
TC B
I RK
? BK
C
`
R
`_
B
char
O
AC @
=F
@
M R
B
T P>
M ZP
B>
CF
BD
\ =
?P
LI@ F
B@
?=K F ZI@
B
? BK P@
=
I RK I PK
R K
> I= B@
R@
I> U M
R@
P@
?K
’a’
JF
=>
M
B
$
Z P
M #
KC
O@ I B P
J T> ^
KJ
P@
?TC Z T
P ?U
LI@ K \ RK
T> ? J> ?L@
C Z
BK
>
B OF J
P@I B [A B
#) B P @
( P@
IF
( $ A=K IA@
F
Q BK J I@C
( @ ?@
IC
# ?> F BC
J C = PK
IK
@ YF
= B@
B
I> IT> P G IC
B
IT> P
z
BF
R
ASCII
LK Y
@C
@ R@
G
JF
>J
U
[A B
@
IK B@
K
CF
’a’
97
T
M JU
?K G
? RF
C@
@
[IT
QL
C@ B M
@
>
K
I>
? R@ 
@C
QK
IK
KF
SJ@
>
U
[A B
@
char
[L?
I>
?F
I>
I V> I R@
LK B>
M [ JJ
R
B ?C B F
P@ F
T
[A B Z
@ CF
P
B
P@
J
C F I B@ F
?K K
?F J
B@
ZIK I> U
J
[A B L B
@ P@
h F
B F ? R@
C PK @ B F
B GI
P@
CK
char
=@
?@
XTC@
Z
? BB F
C@
C PF
^
C
M [K
I> U
LK O JF
?> B F JS@
? AI
>
I B@ L>
=? PK B@
G
R
Z@ ?
]
B F R@
CF I
B B P@
P@
?F
O
B@ R@ F
IZ@ [T J
C@
R
?
I
=
=
I B@
=
IK PK
[S
?K
>
K\ B
TCC G I P@
L? F ?
Z B
P@
>
B
?@ I P@
=> ? PK
? RF M R
G Z ] O@
W p ?=K
T@= > U
I
?> B F W @
K
> A
U L
B A J@
P@
?I F
c B
J> B
A> P@
AK J
PK
S@
B
B
IT> P
Z
P
AL F
J@
J>
A>
C
@
?>
I
I B@
B
B@ F
unsigned int
unsigned int
P@
= PK
C
IK
OI
c
int
int
’a’
The type char.
a
9
C>
L
^ A@
I@ P@ ?>
>U F
M I@ C B
AF
O@ L J
[
Q PK W@
@
B TC PK
P@
> U BB
JJ> P@
QK
O? F K
TZZ JK F
F SJ@
? R@ JF AK P@
G@
C
IK B>
G Z@
std :: cout < < ’a ’ + 1;
’a’+1
char(’a’+1)
{0, . . . , 255}
char text [] = { ’b ’ , ’o ’ , ’o ’ , ’l ’}
char text [] = " bool "
’\0’
5
’\0’
’\0’
1, 2, ..., m
m
i, i + 1, . . . , i + m − 1
B@
B>
B
[
? B PF
Y
B
PK
B
B
P@
? JF
@
LK
B
M C PF
[T>
T> R
AT B
G B
QF
?@
I RK
C
K
K
? BK
[L
? BF
@C
T>
LI
Z
[CC
BF
? B PF
Y
>
A> U
I@K
? BF
L@
Z
I> U
K
? J>
Z
?F
?
?
TLI
M Z@
AK
I>
ZIK
C
IK B>
]
\
H
o
n
ml
sz
sw
std :: cout < < "\ n";
sq
s|
{
r
rz
rx
rw
ru
2
a
int
3
a
2
a
int[2][3]
R B #
T P@ ? $
I R@
[? J F Z
[A B ? F \
@ B
C F C PF
=KC
@
G >
?D U
RF
?Z@ ?L@
C
I@ ?> F
M KJ C
O
$ C P>
@
@
BC
ZB
P
>
? J@ U
[C
IK
IK
IK@
?L@
J@
PK
M
{
q
std::cin
[S
I@
O F I@ RF
JJ ?= B
S@ F
=> ZC
L@ ? BK
@
RK
LA I
[ B ?A RF
W@ T
K
= B
[ B J K B>
K
B J@ 
B
P@
?@ ?=>
? BK
>R c F
U
B
@K BI
ML M
I?>
G >B
C
P@
=
?F
I B@
IK PK
=
K
OKC
qx
std::cin >> t[i]
qw
M
Q
B@
B>
I@
?=>
S@
L
LI
RC
P@
ZIK
@
I>
A P@
S@
=>
qs
=>
B>
S@
@@
? BC
?L@
L
R
@U
B LK
B
^ O
a
R@
OF
= BP
I B@ I@
AC
[S @
= =B
IK PK B>
= B
I B@ P@
I> U ? PK
L ? RJF
Z>
CU
M ? BK
T RK
? I
BF ? R
J AF
B T
C PF B
IK
= PK
W B@
@
G [B K
AL
qt
P@
@K BI G I@
C
R L@
C
qu
OF
B
P ^>
B B@
P@
I@ C B
TC B
NMC PF
BJ
? S@ F OT@
Z C@
„# B
 P@
KC K U
=
? J> BB
PK
ZK C B
C BI
B @K
I@ P@ QL
TK
OCK @ J
O
? C
P@
B C F > ?=K
I P@ B K
B P@ BB@ A F
I@ P@ C AL L
C @K BI B = JFF
K
BF
JJ L B [ B J
I
' @K
?
R
I@ F
ZA
QL> KC
K B
> J B P@
?> U ?@
@
= >R
IK PK B U
= P@
I B@ C BI
@
B K
P@ G
L
Q?=> ? EF
I@C =@
?> F B
Q P@
B> TK
J
@
>
W@ U
K
=
[ BJ
B@
T JJC
C
qz
qr
qq
q|
{
z
x w
y
u
t
s
r
q
# include < iostream >
int main ()
{
// search string
char s [] = " bool ";
int main ()
{
// definition and initialization : provides us with
// Booleans crossed_out [0] ,... , crossed_out [999]
bool
3
int[3]
F
P@
^ G
P@
? JF
@
B >
P@ C
W B@ B
?=>
B Q
? D ?@
B ?@ F
C PF B
M J
=KC [
@ B P@
A
B I
P@ >
C ZI
@K BI K
L
L ITC F
?
Z
?F
r|
# include < iostream >
Z
B
B
JJ
P@
G J@ 
B
rq
// Program : eratosthenes. C
// Calculate prime numbers in {2 ,... ,999} using
// Eratosthenes ’ sieve .
[? J
?> B F
IK
IC 
>B
T==
II
?@
=@
>
U
B
P@
C@
IK
=P
P@
B@
rr
h
O@
AK
A
? P@
Z
A
[J
B
A P@
B> I
B ZI>
P@ K
IC  L
> B B>
T== B
II P@
?@ W B@
=@ > B
> U
U
B B P@
P@
C 
? BI F J@
BC
T L
ZIK
I>
AT B
T>
@
[ S J@
?>
L?@
G @]
B
M
L
ZIK
I>
A P@
B
eratosthenes.C
"bool"
I R@
R@
= JK
B
B>
M J@
L
@K BI
C
B>
B
^ PC F K # JJ> )
(
OTC #
C \
B> ? SJK
C@ NMC Y
IK ?
=P @
I> U O? JF
C M @C
? BI F @
ZC G = B
B C]
PK
B T P>
?=> J
?R
? BK F >
B
[
?C F
@
=@C
C
IK
rs
// Program : string_matching. C
// find the first occurrence of a fixed string within the
// input text , and output the text so far
OF
T BP
?
P@
P@
B
B
B
C
? BI F O P S@
B@ F ? F
Z? ] AC Z>
F K I@
=@
BC F M C R \
>I ?K [ S
?Z FF R R@
K K B F TK U
J J
J> M B J
[T> JK
OTC B
G B C P@
[
B> K
T> G I@
AT B ]
W B@
T B\
A
U
2.6.11 Multidimensional arrays
I> V
W@
K
LA
G [C
K
IIK
>
IK
[C
IK
@
Q PK
O@
?=K
M `
`_
?D
for ( unsigned int j = 0; j < m ;)
// compare search string with window at j - th element
if ( w < m || s[j ] != t [( i+j )% m ])
// input text still too short , or mismatch :
// advance window by replacing first character
if ( std :: cin > > t[ i ]) {
std :: cout < < t[i ];
++ w ;
// one more character read
j = 0;
// restart with first characters
i = ( i +1)% m ; // of string and window
} else break ;
// no more characters in the input
else ++ j ; // match : go to next character
[A B R@
@ = JK
I
R@ R
= JK G ] G @C
IK
B>
?> B F ^P@ @
S@
K
[A B JC ?K
@ >C K
> K II
U [ [K
C F B PK >
B ? J@ U
CF ZB
K P
rt
// find pattern in the text being read from std :: cin
std :: cin > > std :: noskipws ; // don ’t skip whitespaces!
bool
?K
sr
unsigned int w = 0; // number of characters read so far
unsigned int i = 0; // index where t logically starts
P@
BF
Z
P@
BA
F
O
O? F
R>
?> B F
>
U
B
P@
>C
J>
ZF
=K
J
IC 
B
?= F
L@ M
K
QR
?K
L@
CK
KR
B
B
?K \
)
- 2
( #}
#
Program 15:
ss
tq
F [=
@K B =
C[ = JF
>
B> I
C I R@
PF ?>
BU
B B P@
P@
O? F O? F
R> R>
O?> O \
B
A@ P@
JK IC 
=@ @ B
J@
[S ?
C L@
AL F B
[ J I@ RF
IA@ =
[ BJ
JK >
?= F U
JJ>
Z@ O C
J@ B
?L@ P@
B C JK
> ?> B
U @
B ]
P@
B
W B@ C PF
B
LK
OF @Y
B C
P
i
M
st
// cyclic text window of size m
char * t = new char [m ];
su
// determine search string length m
unsigned int m = 0;
for ( char * p = s ; * p != ’\0 ’ ; ++ p ) ++ m;
B ?K
P@
sx
i+m
U
B
P@
O? F
Z
I>
ZIK
L
AL F
J@
?L@
BC
B
P@
>
QS
T> F
C
K
ZI> J
BF
P
L
BD
?LK
>U
JJ>
^
t|
{
s
?@ G
B
O? F
R> F
G
O ? BK
F
@ C
B
AL F O>K
>C II
@ [K
K C
II
T=
P@
?> R
@
I> U
?K
MZ
? BI F
I> U
B
P@
C@
KI
=P
C
@
MNIC
?>
= B@
IK
= PK
>
delete [] t;
return 0;
}
std::cin
bool
std :: cin > > std :: noskipws ; // don ’t skip whitespaces!
int a [2][3]
H
H
o
n
ml
GG
n2
M
nk
n2
m
P@
PK
m
RC
B>
G
j=`
j
G
{0, 1, . . . , n − 1}
B
IC
L S@
mi + j
[ PJ
W@
? B@
L>>
?T U
F
I P@
C
=@C
@
C
K
[I
?
IK@
C M@
B> ?C
F
=@
C@ \
@
K
> JC
I B@
>
AU
?>
?
W@
[
K
IIK
B
^
CK
P@
CF
B
P
= PF
CF
G P]
L@
` _ KC
`
[?C
W BK
ZIAK
IKK
BA
O
]
\
M
KC
p
S@
C
B
?
K
]
BC
ZB
? J@
>
IIK
K
[C
IK@
P
U
WA@
JB I@
F
RF CC
?L@ ?> F
C
?> F ? B>
K F
J F
IIK K B F
K JF
M [ ] @K
A
O?@ ?>
@@ F
B@
R I
Q S>
B
B
DU
P@
TL
B
P@
K
C@
T B>
O@
O?K
@
\
…
OF
B
P
B
P@
K
I@ RR
CC
>
U
B
P@
IC 
@B
J@
?L@
>B
U
KF
SJ@
Q
B K
P@ I
? F G L@ GG € [A B
G … @
B ZK a € A
P@ ?
> U M F M … ?>
F
JJ>
O@ T B@
O? F Q S I
PK B B>
Z @ O@
=>
R@ I B> ?=K G €
IK U @C e GG …
> B
Z I B OI €
?L@
F G …
G B ?K B> B@
F
? F B YJF aC
@ [T>
I@ RF B
= B B PK
? F [LK
? R@ 
TC
`_
B?> FF M ` AC@
> ?C F M = B
U
B =@ O@
P@
?
F
C R@ GG € I> U
I@ F G …
LK
A R € [ JJ
>? …
F C F =K
B@ ? J
QI > B J
B P
IK K C F
K F [A B [A B
SJ@ @ @
TL
‚
ƒ„
^
Q P@
TK J
@C
n2
?F
Q RF
T RF
M KJ
a[i][j]
B
R
m
>B
P@
D
[T> U
R
F M I@ e
LF B K
BK P@ C Y
?
B
G ?> F > F
Z
K= F I> U
J?K K
C T
OI@ L J
B
CF F
h RF
B ?L@
I@ P@ C
?> F
?C F K
?> K J
G @ IIK
[
T
T B O BF
? ?P
?>
I R@ c
B ?=>
P@ C
T=> ? BK
?
B
M I B@ c RF
Z>>
C@ P@
?K
S@
K
A P@
?I@
S R@
BF =
IC B@ I JK
@C
O@
G @B
B>
int *p[3]
int
CB
?K
C@
i=`
B
[
?> F
T S CK
[
QK ?L>
I@ Z
?=K
C
?L@
M
J@
?L@
@
C@ P>
GG …
G
‚ €
ƒ„
~
‚ €
ƒ„
new
IC 
@B
J@
?L@
>B
?K U
B
(i, j)
B>
i
O? F
Z
=>
R@
IK U
Z
?L@
B
R@
?L>
C
K BI
C B@
B>
F
a[i][j]
B
nm
>U
JJ>
n
^ ?>
R
=@C F
F
U
ZF
=K
?J
J>
[T>
CF
B CF
P@
@ B P@
J@ @
?L@ J@
?
> B L@
U B
int n = 2;
int (* p )[3] = new int [ n ][3];
A
P@
n2
>B
B
n = n1
C@
C
B
P@
?U
=
?> B F
T
U
n2 , . . . , n k
(i, j) → mi + j
ALK
>
Z B TL ?
P BJ @
F
RF IC 
?L@ B
C C>
?> F T J
K ?> B F
J
IIK B
K PK
[C
B
C F TC
?K B ZZ@
C PF C
KI R h[ BC
T> BC F
BF
@
= ? R JU
KF [
[A JJ K O? P@
L
IK =K F [T>
B F [ JJ
?> B F K I@
JJ> ?=>
? B FF =K C
B> B@ R@ F
TC ?K> I
@ B
II SK R P@
K F
[C ?L@ K B
C
[ S ?> F L@
? R> F K J [IL>
K
ZC IIK JK
> [ [T>
L@ > U B
? J@
Arrays of pointers.
nk
?> F
I B@
n1 , . . . , n k
F
B Z G
P@ F
? F W@ B
TB A
Q B FF = JF
?@ [ B JF
> >U
BK ?I
?> B F ?>
c
?=>
C
? BK
B
LI> RF
?L@
Q@> C
@M I ?> F
C
B CF
PC F ?>
OI> [ J
Y K
ITK>
? OI> Y
K
R IT>
S@ ?
=> M
R
L@C B
T
Q@ P>
?@ M Z
P
?C
LI> F
@ =@
C@
T=K
Tb
C
?> F
Z
K
ZB
g@ ?Z J
P KJ TB F
I
G IK C OZ
[ R BF
CF
^ O F T= ? PF
P@ B CC
@ P
R
J@ R B G =@ F
F P@ C
?L@ ?L@
B
B C O>
F
?
>
R
OF
B C ?L@ F
P
J>
C
Z F ?K ?> F
=K R K
? JF
J
=K
RF ?=K C@
=@C
?>
S@ [ J
C B>
TL F QK
JK >
B@ RF
R ? J@
[S Z
K BP
[
?K ?> > U
@ I
R RF T
L
?L@ G JK
C @
?> F
K Ba
J
IIK O>
K RF
[ ?L@
> c
U
? J@
p
A
B >
I B@ L@
C
T> J O F
B
?> B F PP
ZF
B I P@
PK
B RF
@A@ Y ?L@
C ?C> F
B K
? P@ K J
> IIK
BK G [C
?> B F
? F AK
A
B @K
P@ I
?> C
@ K
RF ? B F
?L@ W R@
C
?> F
K
J
IIK ?
K F
[
B
P@
C PK ?>
J> @
Z F RF
=K
? JF L?@
C
R ?> F
=@C F K
J
IIK
G [K
Q RF
$
=@ F
?K Q
I@
R M CK
B
P@
L> @ J@
R
?L@
^ >B
C PF ? UF
OI> W R@
CY
OF
B
P
L>
M [I
P@
L@
B
GG
MG ƒ„
O
Q\
TK J
@
>
‚ U
ƒ„
n2
Z J@
RF
?>
S@
U
TZ B F
T>
AC
IK
>B
[
? R@ 
@C
?K
IIK
K
] >
U
? J@
ZB
P
Q\
TK
J@ J @ J
R >
B U
P@ ‚
ƒ„
O P>
# C
@
> @
U J@
B ?L@
P@
K BC
II K
M [K GG I@
?K G
[
R T>
B
P@ Z@
WA@ B
I@ B P@
CC A
?> F T= F
C IB
‚ G @
#
=K
IK@
nk
?C F
n
?> F
C
CF
B
P@
>U
J
R ? J>
OF
h] Z
[T> K \
Z?K
IC  M F
B O@
[? R ?>
K [J
LF R
=K TC F
[ JJ =C
K C
JJ> B
=K P@
B@ =K
?> C@
@ >U
IIK K
K B
[ O>
> R
U ?F
L@
) C
?>K F
& J
C
?L@
@
C J>
S
@ Fb
Q= B F
@
[J
K
@C F
>
?=>
A
T==
?K " ? BK
R> W@ B
A
LK I
==@ C@C
CC ?> F
?F C
>
TL ? U
F
B JF B@
I
Z
RF K
?L@ J
C [A B
?> F @
K ?K
J
IIK A R
K >C
[C F
Q BF
? _> O> Q@
I
XTC@ C Y TK J
K G
?@ C @
WA@
M [ BJ @
= B@
hR
C
?=>
n2
P@
[
R O BF
P@ PR
F
[T> ?L@
C
J@ ?> F
C
Q@ B
@I ?K
a L S@
S@ IC
n
?D
T
BB B
?
=> F Q B F
AL Z @ F
?> M [ J
F
I J@ I@ B
C F > C PF
AL F OK ALK
A
J B@ U
= FF I?K ? F
[ BJ > Z
K
? R> F B P@ ? BB@
GI
C
Z
I> U aC B P@
TL [T> F
LK
B JF
?Z
RF ?=K K F
?L@ C [I
C @@ BK
?> F I S
K > U > J@
J
IIK L U
K T V F I>
[C Z
I@ O C
O F ?K
B M
R
(P
B
# C PF =>
TJ
WC@ F ?
K LC
RF =
?L@ [ B J [C S
F
C
?> F O AL
PK
J
C B [
P@
A
B T
B
@
TZ VF
I@
G U
a[i]
?B
I P@
Z
n
K
new
[
O@
J@
?L@
B
a[1][2]
?K
T=
P@
@
int a [][3] = { {2 ,4 ,6} , {1 ,3 ,5} };
PF
@
$
a[1]
IIK
{2,4,6}
#
'
a[1][1]
#
0
nk
a[0]
F
K BF
JF
a[1][0]
?F
TC F
C@
R
B>
I@ P@
C@
[A B
@
>
= BC
@ Sb Z P
B
T P>
B Z
CF P
O@
K T
B TC
J K
@ YF [ JJ M
B
I> U ? PF
?> Y
>
c@ U
RF TL G
?L@ B J
C F
?> F ? RF
K L@C
J
IIK ?> F
K K
G [ C IK J
IK
V>I [C
K
W@ C
K BK
AL SJ@
M J@ C>
I
B
P@ LK
B BI
O> =@ F
RF NMC
?L@ B P@
C
?> F L@
K Lc
J
aJ
?F >
W R@ ? UF
W R@
?F
M
B ?K
P@
IIK B R
K
[ C PF
@
J@
?L@
?K
B
CF
C> R ?K
?> K
II
K
[
BC F
G @J
U
a[i]
a[i][j]
=KC
=
O
M
R
IT> B P
I@
R@
= JK
>
[T> JK
[I
i
n1 , . . . , n k
B
G C PF [? R M
K
LF
=K
[ JJ
K
JJ>
=K
B@
KI R
IK
[
>
U
? J@
ZB
P
G
nk
PF T
IX@
P@
Dynamic allocation of multidimensional arrays.
^
int[2][3]
a[1]
F
BF
$
>
[
K
IIK
n1
P I@ F
@ RR
?[ R ?L@ F
K C
L F ?> F
=K C
JJ> >
U
=K K
?> B F TL
C F B JF
=K RF
JJ@ ?L@
R c
O
L?@
a[0][2]
B
C PF ?C> F
?C F C
> TS
TC B B
IA B P@
I
?C F IC 
G F B
Z T
L
I> V C
W@ B S@
K
AL ?=>
M J@ ?C BK
?F
B
?L@
RF
ni i = 1, . . . , k
J
J@ F
G
a[0][1]
aJ
=>
{1,3,5}
I> U
=@
K
AC
int a[2][3]
int
M B@
n
n2
B
B JF
RF
Figure 10:
K
C
?L@
T
?> F
K
J
IIK
K
[C
R ?=K
$
B ? S@
P@ F
IC  K B FF
B ] JF
RF ?@ R
?L@ F
C K
?> F K
O[
LK C F
[
L
S@ JK F
> I
B>
L F ?>
BB@ @
h R RF
?L@
C
?> F
K
J
IIK
K
[C
B
Q P@
KT
J
@
>I U
B
P@
# ?K \
a[0][0]
AL
O?
? R@
R C@ 
?K
IIK
K
TC F [ >
C@ U
R [A B
I> U @
?K
^
C PF
3
B
S@
?Y
>
>
M
6=2
…
GG …
G
‚ €
ƒ„
LK
[?
[
C
?> F
K
J
IIK
K
j
?LT F
‚ €
ƒ„
‚ …€
ƒ„
O F B F G I> U
T B P G L@
?
g@
D TB
R@I ‚ U C
[? J ƒ„ C
F
I BK
Z C PK B
[A B Q O
@ TK B F
J P
€ @ B P@
GG …
G
=KC
€ M @
… K O
C F A I P@
> ?> @
S F K
? BK F I B@ JJ
@ B> RF
R
I> U K ?L@C
[? R ?> F
LK K C
LF TS
K
WA@ = JJ BB
[ P@
I@ K
CC J> J IC 
?> F =K K B
B@ I@
R ?Y
IIK >
K ?
[ O
> K
U
? J@ B
=>
Z B AL
P F
J@
a
G
I@ P@
‚
ƒ„
O
a[0]
PK
QC
KT
J
? B PF @
Y M
K
T S>
B
BF
>I U
K G
CC
?> F
GC
D
[T> U
WA@
I@
new
MG
T K >
?
I
TK J
J> J
@C I R@ =K I R@
[? J B@ B>
F R ?Z@
Z IIK @
B[A K I
K
@ M [ B@
IK@ € B P@ LK
? Y GG => =
> G … LA ? PF
@
O? € J@ F ? JK
K >… I T
B
T Z
=> TA== LC K
AL @ F ? B Y Z@
C
=>
J@ F C \ > R@
B F @@ O > U
L@ E@ P> II
= O ?K
?> B F ?LK R>
G [ L
K
G f
G ] L@ =@=C
L> C
T [I A>
B =@ I@
B J K
C PF K JC ?> B F
CF C
?> ? F ?C>
[A J Z J@ B
@
>C J@ P@
C ?L@ [? R
F
SJ@ B K
FU > U LK F
B B = JJ
P@ P@ [
Q
n2
Pointers to arrays.
nk
// type of * p : int [3] <= > p : int [3]*
int* p[3]
nk
m
{0, 1, . . . , m − 1}
`
m
m
{0, 1, . . . , nm − 1}
n
HH
H
o
n
ml
C
i 0
PK
B
IK@
I@
K
= PK
∞
?D
T>
I> U ? F
>U
L I
B LK
I C P@ ?> B F
=K T> J
M C@ B B PK
?> F
O@ C @ B
O
?Z@ > U ?
@I B P@ @@
K
?R
J K\ F
@ F I@ J I>
B K R@
A P@ [ R I
I> QC> X B>
T
SJ@ @ J
R ] = YF
LK C [ J
C
> U LK J =>
JJ> I J@ ATL
T
CO C B@
h AS
B
I> U I> P@
C
>
S
$$ J@ T J
@ G
AL LC ?> B F
[B
B>
K
=@
JJC
QZ F
?@
?>
TC
AS
B
I>
P@
>>
SJ@
MI
L
P@
B\
B>
B
J
=@
Q PK
O@
?
U
>
P@
B
U
?Z FF
K
AJ
I>
SJ@
I>
B @
P@
F
I JK ? R@ G
ZI@ B L
?> @ F
MN@C TC R
?K BK F
R SJ@
L@ TC
LI> A S
I>
@F S
B J@
P@
C NMLC
T> J
O@
?> B F C>
G C QJ
@
K
^ JJ
PK >
B U
M O[K B P@
O@ ?L F
Q PK T B
@ M I?
K
JJ I U
B >
P@ L
P@
I J@
LK
C
>
B C
P@ LK
I JJ@
I
Z PF TC
B A
TC I S
AS >
I> J@ S
SJ@ LC
>
M LC U
?K B P@
C
R K
B L@
PC F
C
T
LK BI
[ T=
IX@ B
T G I@
I@ F
K ^P@
K
LI> I B
@ ?F
I> ? R
[
CC J@ K
KU L
c II A= F
@K I>
?= PF IZK
Z L
?Z@ ?L F
I@K ZC F
J
K F B>
?
?> B F 
R
#
) '
=K
JF
I †@
@
SJ@ C F M
?K
A B>
I> AK
A
J@ S I>
K
LC =
P
O SK
C@ P> C@
C R
T> J ?>
?> B F C ?=K (
XT )
= YF J[ S@
> S G
? BK F @ ^
R C PF
I> U
Z?@
L I@
B K
P@ J
C> B@
T J ?=
P
?> B F XT F
C @
B> C F
A
AK
\ ?C F )
)
F =@ R@C B (
?T P@
>
P>
O L S@ BI U
R> I [?
[T> > F
TC U ZK
Q@
J
?@ A= P A> J
K CC
?Z@ B F
PC S
I@K C F A J@
C K
B@ F
K AL B PC
JJ [ J ?K
B B>
C P@ > R
A@ JK C@
K I J@
B Z@K ?= B F
PC
k ] I@ J Z
K B
[ R C P@
I> U I P>
L> C B@
IK R@ ?> B
B@ @
>> ?C F
I >
RF ?K B
?L@ A>
C
?> F B
G C M ?> F
@C
=@
?K
I
>
TC>
I
>
L S@
U ?
T\
O?K
@
B
R U B>
B> I BK I>
OI
? B PF M Z@ B OC ] B@ F
K
?
K
?
Y
AK
K
R
I>
T S> B R
ZI
P@
?
B
\ K
B OK T L
PAC F
G JJC L B
I>
I S@ B PK
SJ@ †> > U ? 
O
L ?=K T=> J K RC
I> U
C
K B ?L P>
PF C I
C
]
O
> B@
G PJ@ F S@ U C B
I
? R> B P@ >
J@K @ K U S>
C k = BA
?@
B> K
> @> U [I M B
P
B@ I@
B I@ M I>> QZ?@ F
PK K
B ?R
B F B P@ B
P@ Z
P@
T
% I U =>> RF
B I? ?L@
& ' M I P@ K RF C
?> F
(
O@ C B@ C
Z@
[T>
IK
T=>
?@
E
T
T =S
S
'
%
)
#
#
#
<
D
'
^
F C PF
TC B C F
T
C
=@C T@
U
FU > J
B IU
P@ W@
I> K
O> AL
? UF J@
O
W R@ ? P@ G
[T>
PKC
? J@ O?K M
Z B BB>
P
=
M C@
C PF Z B
K G PC
S
S
i
E
C
T
T
`
T
G
#
4
F
T
RF
?
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
4
5
4
5
4
4
5
4
5
4
5
0
1
5
0
1
0
1
0
1
0
1
0
1
T
∞
`<∞
L
JJ
B
B
C
?> F
> K
?B J
@ IIK
@C= [K
C
IK AC F M
[ JF K
?=> = B
C P@
T@= TA R
Q BF
@ I> U
[J
L
IIK K
?K C@
B
Z@ >
? RF U
?>
L@ @
R
L> ? F
[I L@C
? D ?> F
K
K U K J G = B II
K
B NM[C ^P
P@
CF
?L@
O>
P@
M
^ Tb
P@ C
B
L@ YJF
@
L> ?
[I K F
JK
[T> I@
T
B Z
C F I JK
RF B
I?@@ O>
R
B L?@ F
B
T P> ?C> F
Z K
hP KJ
II
TZ VF G [K
I@
CF
IA@
JK
=@
R
[S
TZ VF
I@
B
[A B
@
^
P@
F
SC
6
7
6
7
6
7
.
/
.
/
.
/
4
5
4
5
4
5
0
1
0
1
0
1
7
7
7
/
/
/
6
6
6
.
.
.
F A B>
? BF >
?F
?Z F B@
I
E@ B>
=
?> B F
G
G
G
f
M ]
?K C F
R B P@
I@
I>@ U
AK
CF
?K ?> F
Q J B@
I
TK J B>
@
>
U
[A B C \
@ @@
IA=
I B@
F AC F
TC ?>
I B@
?>
A
?> P
K
ZIAK
IK
A P@
6
7
6
7
6
7
.
/
.
/
.
/
8
9
8
9
8
9
*
+
*
+
*
+
6
6
6
.
.
.
8
9
8
9
8
9
*
+
*
+
*
+
8
9
8
9
8
9
*
+
*
+
*
+
<
>
>
>
?
?
?
>
?
>
?
>
?
<
=
>
=
>
=
<
=
:
;
<
=
:
;
:
;
(
)
(
)
(
)
<
=
=
;
=
;
;
)
)
)
<
<
:
<
:
:
(
(
(
>
?
>
?
>
?
<
=
>
<
=
<
=
:
;
<
=
:
;
:
;
(
)
(
)
(
)
'
&
'
&
'
&
>
>
>
<
>
<
<
:
<
:
:
(
(
(
'
&
'
&
'
&
S
I> V
S
?F
K
B
L>C
B
C
A B@
GC
S
L
SJ@
I> U
S
JJC
B
B
? J@
F ?@
?F
I@
Figure 12:
B
=@
I P@
>
%
$
LK
W BI
RF
IK@
@
[C
Q PK
I JK
TZ
K
IIK
Q@
?K F ?@
[
LK
TS
L@
B ?K
B NMC
C@ P@ B
int
=@
C>
L@
OF
B
?K P
?F
I@ B@
C
? BF
ZAK
A
J
=K F
?> B F
BI
OI@
[C
K
IIK
a[i][j]
P@
S>
$
=
?> B F
C@
B
C PF
c
J>
K
C
I@ B>
S
B
H
S
JJ
21
=>
CF A
L G BC LT
] B@
B>
@ B
h = P@ $
JK
TC aC F L L@ B PK > B BB K U
PK
C
B C PF P>
B K I
P@ > JC B@
? J@ C AC
Q> B
ZB @J K
P> TC> B P
K U I I> U
C I> L
I P> ?Z F
F B>
C B@ K
AB AJ
K I> \
B S O P@
P
I> U J@ I@
L> B
L U Q P@
=>
B> A TK J
TL @
C F ? BF C F
ZK
C ? FU
P> >
> \ I TC
B C B@ =
I P@ A B A P
OC F K B K B
@ P P
B>
B
B
'
n
KJ
T
I> U W @
P@
I>
@
QL>
#
$
G
i+1
S@
12
JK
S
M
T
T
? F O@
?Y
>
C >
O A B@ O
FU G C I
ZF
P
KB
M
O[K
B
B
I@ P@
PK
B
TL
B
C
I@ P@
B
S@
?C F
K
A>
=@
K
JJ
K
B
RK b
KP
?=@
KB
G JJ ]
B
B>
@
K
B
PK
> JC
B
CK
CF
[
I@
B
K
PK
= PK
B
SJ@
CF
I> U
(
L
%$
?F
I> U
S
T
?>
S
S
S
a[0][0] a[0][1] a[0][2]
?K
B>
TB
C
?=>
T= J
R@
g@
a[1][0] a[1][1] a[1][2]
B>
0
J
CF
Z>K
P@
R
Computing shortest paths.
B
I
M @= ]
?K
TC>
P@
S
B\
TL \
B JF
RF
?L@
C
?> F
K
J]
IIK
K
G [C
D
LK
?Z F
@
K
I@
?= BK
TZ
I JK
KU
=
I[ B>
>
M I>
TC
Q SRF
F
R@
? RF
B>
XTC
IK@
a[1]
a[i]
G
JJ
=@
T= G JJC
A
S> E>
IK L@
MN RC >
T S BU
P@
B =@
J@ J
BT JC
C IK
K @
SC SJ>
K BI = Y
= @
[ BJ R
=K O B F
JJ > P
B SC
P@
BK
L =
J@
C
OK \
JJC B
G ] C@ P@
T=>
I> a J
S> > RU
B WI@
CF
?F K
F A
K B F L J@
J[ J
S@
J>
=K LK
B@ ?=
P
K R @C F
B
I>
Figure 11:
n
=@
C>
L@
int
int
A
T> U I BK
BK T>
F
IK ?@ Y B
SF ?
I Z@
BF
JF D
Q
T
K
B
=
PK ?@ F R G B ]
@C B F B
S
Kb
PC F @= J M I JK [ ? B
I> U W@ G JC F B P@ > B ?=@ B a
P
T
B I C C F B ?K
B K
BK Y > = C@ =@ [
P@ A
T
I> L
@
C S> AK P M A B NM JJC B F
M J@
T S M L@
S> K
T BR B
C
B J
A B@ ?I F W@ P O@ > B B
B> B F
I@ B J@
C Z C F O?K I U P@
I
K
B> BC F G BC B Q> >
B
= ? PF
]
S S>
I@
P Y
B>
K L> †@ ? T> F B
h ?F
= P ?> B F M I@  IC ?=K
FB Z
K R @K
?=K QI@
I> U I> U B P@ C ?C> LK
A @K
P> C @ Y
KC JC
L L ? J@ I B@ F ?>
C B
G ]
B
C
B> Z B P A B LK @C
S@ PK
B
>
J> B
> [
TZ VF
U C ?> A B@
O I P@
I@ B \ IK C F
B @
P@ > SJ@ [T J I> U
P@ K
? F S> I> C
=> I@
@ L
AL @C
J@ \ K B FF K BA S> =@ BC F
C
A
?
U
B
?> @
B J B
J T
C ] =@ P K JC II=
?@ B
KF
P> JJ C F B P B PK ?@
> B [ JJ
B I> U B B
C
O
U B
IK =@
?K @ R> ?T P@
OK O>
L @@ JJ
C
?
W@
JJC
K > L S@ B> AL ?K B>
K RF
@
B
G [B
LA T=> I>
K Rb ?I@
[
J@ ? C U I> \
?=@ A B
>
U
?
B
B >C
O F ? A B@ 
B
B F C
B> c
P@
R
P
C
a[0]
int**
=@ AC B@
J
T
? g@ ? JC NMC
?K
@ BT
I@ †@ QZK IC B JF R
B F A@ O @ K
IK@ ?@
K Rb
F IK P Z@ ?=@
B
B B@ C@ B>
P@
B
TC ZI@ B
B>
A
P@
AS \
QZ B
I> >C ?Z@ @C F C PF
C
T K
SJ@ SF I@K C
[ J J K =@
LC
@ F A I JJ
B> ] A R K B @K
B
P =
O PK I> > PK
P B
U
= PF ? F SJ@ ? J@ SJ@
?F
OA@ =K RF hL Z B
P
? JK C B@ O@
B O?K O P C
B> P@
= F A B@
I@ ? J@ BB> C PF C
@
TR
Z JK C G B
=@ > B P S@ I P> =
B U ?K J C B@ V>
C PF K
A JJ>
h C [ >B ?
O
P>
@
I> U I B@ A CC F
F
L
TZ
K C
G SJ@ C
QZ F BA [ B
=P
?@ K B =@
K
J
?F IP J
=
U>
? PK F
B@
ZI@ L O B F
>
P
U
B AB
K
=@ G B P
J ?
T JC D
I U T>
B I
I P@ W@
K
R>
?GO AL
M J@
B
P@
?
K
IJ
ZF
T BB P
?I
>
U
B
A P@
K
B
P
T=>
J
KR
> JC
P K
Q S>
] G@
CF
A R@ T BD
?B
= B@ F IC
? RF T>
B
TZ VF B PK
I@ BA
K
?CC
F
I\ Z
FZ K
G B P ] Q S>
@
> CF
B@ KC U
B M I B@
PK
? B F ?K
?Z@ K R
I
I@K T@C
J
B ? B JF
I@ P@ Z
C
Q PK ?C F I P>
@ > B@
B C
?@ S@ TK BA
? K
B
LK XT F P
\
>
@
R@
U
I>
n
O>
ZB
? J@ M
S
C B@
I P>
C
8
I>
@
?>
'
&
'
&
'
&
B
C
B
C
B
C
"
B
C
B
C
B
C
#
"
#
"
#
"
#
"
#
$
%
"
#
$
%
$
%
$
%
,
-
,
-
,
-
$
%
$
,
-
,
-
,
-
%
!
!
!
!
!
!
!
!
B
C
B
C
B
C
"
#
"
#
"
#
$
%
$
%
$
%
,
-
,
-
,
-
!
!
!
!
@
A
@
A
@
A
@
A
@
A
@
A
// a points to the first element of an array of n pointers to int
int ** a = new int *[ n ];
for ( int i = 0; i < n ; ++ i)
// a[ i ] points to the first element of an array of m int ’s
a [i ] = new int [m ];
T
n
i
m
C
`−2
`
S
`−1
C
S
i = nm − 1
@
A
@
A
@
A
Hf
H
o
n
ml
K
B
? K
J
T ] O@
? C
B F I BK
J B
O @ I> U
?
K L
[ JJ \
I@ O
K PF
= =
G P PPK
C
JK
S@
J
B>
S
T
20, 19, . . .
M
T
S
S
21
'
S
[
S
O?K G
C
i=2
-
i
C
T
z
{
z
{
z
{
z
r
s
r
s
r
s
B>
M
?K
P@
BI
`
a
`
a
`
a
`
a
`
a
`
a
`
a
^
_
`
a
^
_
^
_
\
]
^
\
]
\
]
J
K
J
K
H
H
I
H
I
H
H
I
H
I
d
e
d
e
d
e
d
e
d
e
d
D
E
D
E
e
D
E
D
E
D
E
F
G
D
E
F
G
i
0
floor
−1
RF
=K
B@
i−1
?F
B>
i
O]
CF
BI[ M K
>
U J>
II=> I A>
A@C
B
PK
?>
B
=>
? RF
G Lc
Z
B
P@
>
K G I>
K Rb T
?=@ E
=
B W@ P
=@
G JJC K BI
I
T> U
Z
? RF
int
int
B
J>
?
T>
TS G
B
O@
C
BF
JJ M
K=
JJ
B
C PF
K
B
O>
RF
?L@
C
?> F
K
J
4
5
4
5
4
5
B>
P@
`
J@
`_
B
B
B eC
G P>
L@
B
R
?> B F
>
U
B
P@
K
Q S>
@
?L@
BK
AF
L
Z@
g@
6
7
6
7
6
7
6
4
5
4
5
4
5
4
6
7
6
7
6
7
6
6
7
6
7
6
7
6
8
9
8
9
8
9
8
8
9
8
9
8
9
8
>
?
>
?
>
?
>
?
>
?
>
?
<
=
<
>
=
<
=
:
<
=
<
>
=
<
=
:
;
<
=
<
=
;
:
;
:
;
:
(
)
(
)
(
)
(
)
:
;
:
;
:
(
)
(
)
(
)
(
)
' $ $ ) $
)
%$
( '
#
# $ # % ) - #$ #
%
%
#
'
8
9
8
9
8
9
8
*
+
*
+
*
+
T
(
)
(
)
(
)
>
?
>
>
>
<
<
>
>
?
>
?
<
=
<
<
:
<
:
:
:
(
(
(
(
>
=
<
=
:
;
<
=
:
;
:
;
:
&
'
&
'
&
'
&
'
(
)
&
'
&
'
&
'
&
'
'
$
@
A
@
A
@
A
@
@
A
@
A
@
A
@
P@
B
I@ F
>
U
JK
S@
J@
R
=@
JJC
I?> U
B
I> U
B
P
AC F
I>
=@
NMCC
IZ>
OC G
?F
O
P>
J@
M
OF G
B
P
JK
S@
J
?> R
@C
K
K Rb
?=@
B
B>
=@
JJC
S@
–
—
–
—
–
—
–
—
–
—
–
—
˜
™
˜
™
˜
™
˜
™
˜
™
˜
™
˜
™
˜
23 22 21 22
™
˜
š
›
š
›
š
›
š
›
22 21 20 21
š
›
˜
™
˜
™
™
š
›
š
›
š
›
˜
™
”
•
”
•
”
•
–
—
–
—
–
—
š
›
š
›
š
”
•
”
•
”
•
š
›
š
›
š
›
š
›
œ

œ

œ

œ

21 20 19 20
œ

œ

œ

œ

š
›
›
–
—
–
—
–
—

‘

‘
”
•
”
•
œ
ž
Ÿ
œ

œ


ž
Ÿ
ž
Ÿ
ž
Ÿ
œ


‘
”
•
ž
Ÿ
ž
Ÿ
ž
Ÿ
ž
Ÿ

‘

‘

‘
20 19 18 19
Ž

Ž


‘

‘
ž
¤
¥
¤
¥
¢
£
¢
£
¢
£
¤
¥
¤
¥
¢
£
¢
£
¢
£
¡
¡
¡
¡
¡
ž
Ÿ
ž
Ÿ
Ÿ
¢
¡
¢
¡
¡
ž
Ÿ
Ž
Ž


‘

Ž

Ž

¤
¥
¤
¥
17 18
i = 23
¤
¥
¤
¥
¤
¥
¢
£
¢
£
¢
£
¡
¢
¡
¡
¡
Ž

Ž

Ž

M
Œ

Œ

Œ

Œ

Œ

Œ

Œ

Œ

Œ

ˆ
ˆ
ˆ
Š
Š
Š
’
’
’
’
‰
‰
‰
‹
‹
‹
“
“
“
“
ˆ
‰
ˆ
‰
ˆ
‰
Š
‹
Š
‹
Š
‹
’
“
’
“
’
“
’
“
¨
¨
¨
©
©
©
¨
©
¨
©
¨
©
¨
¨
¨
ˆ
ˆ
ˆ
Š
Š
Š
’
’
’
’
©
©
©
‰
‰
‰
‹
‹
‹
“
“
“
“
Š
Š
Š
’
’
’
’
ˆ
ˆ
ˆ
¦
§
¦
§
¦
§
¨
¨
¨
¦
§
¦
§
¦
§
¦
§
¦
§
¦
§
H
H
n
ml
@
A
@
A
@
A
@
CF
B
14 15 16 17 18
%$
B
C
B
C
B
C
B
"
#
"
#
"
#
JK
P@
A S I P@
I> T@
R
SJ@ =
?> B F
L
OF
I> U I> U ? JJ
Q@
L @
M I JK I?@
G Z@
M
G @ F I B@ ]
B> I B P
O @ C ?K C F
[ JK
Q PK LK J
@ I J@ =@ J S@ JC
JK TC B J K
S@ A S G O F JJ
J@ I> @= =@
JJC
K R SJ@
JJ
B
PK
=@ hLC
B
JJC K
K
C
I@
B TC
I@
PK
K
KI B L@
= PK
@ B PK
I@ B
SJ@
K O@
I> U
= PK
Q PK
SJ@ @
L
K
I> U I J
K
@K
KB
L [R
M JJ
B
10 11 12 13 14 15 16 17
o
B
C
B
C
B
C
B
B
C
B
C
B
"
#
"
#
"
#
C
&
'
&
'
&
'
B
"
#
"
#
"
#
&
'
&
'
&
'
$
%
"
#
$
%
$
%
,
-
%
$
%
"
#
$
%
$
%
$
%
,
&
-
"
$
%
#
$
%
$
%
$
%
,
&
'
-
-
,
,
-
,
,
-
,
-
,
,
-
,
-
,
!
!
!
T JJF
C
K BI
C B@
TC
K\
T= B
K
[ JJ
I> U
C>
L@
C
LK
JJ@
QI
KT
J
@
15 16 17 18 19
)
$
#
*$
#
%$
) %
#
$
#
4
i = 23
II
TC
B>
IC B@
F
2
3
2
3
2
3
4
*
+
*
+
*
+
*
+
!
!
!
!
!
!
9
JJC
M
?>
A
2
*
+
*
+
*
+
*
+
8
JJC OK
U
P@
R I>>
[S
?K K
?@ R [? R
K
BI
C@ F L=K F
> J
U [J
[A B K
@ JJ>
=K
B@
\ BR
I> V O >
LK RF
[ JJ ?L@
C
?> F
K
J
C F IK
KA IK
[
?> F
I B@
B>
B O BF
P@ P
?K
B
B
4
5
4
5
4
5
4
.
/
.
/
.
/
*
+
7
L?@K
S@
RF
?> F
C
QK J@
@
AC
K
=@
I> U
W@
K BI
C
^
2
3
2
3
2
3
RF @
I
C A@
?> F I@
C ?C@
?L@
2
3
2
3
2
3
2
2
.
/
.
/
.
/
.
/
9 10
Q PK
?F
Z
CC J@
B
? PK
=@
>
I>
IB
F
>R
AC U
@
K= F
J
KC=
@C
?L@
C@ P@
]
IC 
@B
J@
?L@
>B
?K U
IIK
K
[
>
2
3
2
3
2
3
2
.
/
.
/
.
/
0
1
0
1
0
1
.
/
8
B\
C PF
CF
f
JJ>
„
…
„
…
„
…
„
IIK
JJC [K
G
„
…
„
…
„
…
„
0
1
0
1
0
1
.
/
0
1
9 10 11
L
h
B>
C
Z@
OT
K
OK
„
…
„
…
„
…
„
0
1
0
1
0
1
0
1
0
1
10 11 12
ZIK
I>
KC
„
…
„
…
„
…
„
m+2
n+2
@K
\
?Z@
?D
†
‡
†
‡
†
‡
†
f
g
f
g
f
g
h
i
f
g
h
i
h
i
6
IC
A
PF
=P
AK
L
ZIK
U G
JJ@
KR @
# M IK
?K J
K
$ I
BF

K= F
J
RK
BK
B@ F
L
B
PK
TZ B
IK
RC
B
P@
K
T= B
K
J
RK
BK
K
?ZK F
C
AC B
@
=K F
J
=KC
@C
CF
=K
h
i
p
q
5
11 12 13
B>
O
P@
I>
P@
A P@
B
>B
IK
^
‚
ƒ
‚
ƒ
†
‡
†
‡
†
‡
†
†
‡
†
‡
†
‡
f
g
f
g
f
g
†
f
g
f
g
f
g
h
i
f
g
h
i
h
i
h
i
p
q
h
i
f
g
h
i
h
i
h
i
p
q
6
JJC
‚
ƒ
‚
ƒ
‚
ƒ
j
k
j
k
j
k
j
k
7
9
[B
=@
‚
ƒ
‚
ƒ
‚
ƒ
€

‚
€

€

~

€

j
k
j
k
j
k
j
k
4
AL
‚
ƒ
‚
ƒ
‚
ƒ
‚
ƒ
€

~

~

~
l
m
l
m
l
m
l
m
3
5
P@
C B@
€

‚
j
k
j
k
j
k
j
k
4
6
B
AT
€
€

€

‚

~

€

€

€

€
‚

€
~

€

~

~

~
l
m
l
m
l
m
l
m

~

|
~

~

~
l
m
l
m
l
m
€
|
|
|
n
n
n
l
m

~

~

~
l
m
l
m
l
m
n
5
@
|
}
|
}
|
}
|
n
o
n
o
n
o
l
m
TJ B
P@
?> B F TC>
J
B>
TC ?> B F
A S B>
I> TC
A
J@ S I S
L >
S
C F J@
I@ L
K IU
R >
[ JF L
QK B
K P@
JK F TC>
SJ@ J
h ?> B F
O@ B>
C@ T
C
B A
B S
P@ I
>
SJ@
?@ L
C>
^
|
}
|
}
|
}
|
n
o
n
o
n
o
n
o
n
o
b
c
b
c
b
c
2
B>
P@
z
{
z
{
z
{
z
r
s
r
s
r
s
r
s
b
c
b
c
b
c
1
3
Z
|
}
|
}
|
}
|
n
o
n
o
n
o
n
o
p
q
p
q
p
b
c
b
c
b
c
2
? RF
z
{
z
{
z
{
z
r
s
r
s
r
s
r
s
p
q
p
q
p
p
q
p
q
p
b
c
b
c
b
c
d
e
d
e
d
e
D
E
D
E
D
E
F
G
D
E
F
G
The shortest path program.
?>
AC
I@
I=>
@C F
?@
B
R
0
n+2
3
4
8
i−1
O G
=@
JJ
T=>
J
R
S@
JK
S@
J@
? RF
^
`
a
_
a
^
_
`
a
^
_
`
a
H
H
I
D
E
F
G
D
E
F
G
0, 1, 2, 3
0
9 10
PK
`
`
a
^
_
`
a
^
`
a
_
`
a
^
_
^
H
I
H
I
I
i=
1
7
?B
?>
@
\
]
_
^
_
\
]
^
\
]
\
^
Z
^
\
]
\
_
\
]
Z
Z
H
I
J
K
I
K
=
[ BJ
B
T P@
?
i−1
2
6
B
Z
[
^
\
]
\
]
J
K
J
K
H
I
J
K
@
S
5
Z
Z
[
Z
[
Z
Z
[
Z
]
J
K
J
K
J
K
I
ZI
3
?F
x
x
x
x
t
t
t
r
s
B
x
y
x
y
x
y
x
t
u
t
u
t
u
t
B>
z
{
z
{
z
{
z
r
s
r
s
r
s
r
s
t
u
S
B
X
Y
X
Y
X
]
L
L
J
K
J
K
G
?C F
=@
K
C
I P>
C B@
AB
K
B
P
4
L?@K
Z
[
Z
[
Z
[
[
J
K
J
K
L
J
K
i
C F LK
B R@
P@ ?K
=> [
G R@ L>
M I@
PK
X
Y
X
Y
X
Y
L
M
L
M
L
M
L
M
J
K
L
Figure 14:
CF
x
y
x
y
v
x
y
x
y
v
x
y
v
x
y
X
Y
X
Y
X
[
P
Q
P
Q
L
M
L
M
J
K
i=1
[ J F B P@
B IK B@ =@
P@
?> ?> B F JJ
@C
PK
?C
> >
OF U
B B B
P P@ S@
?
B A> J> @
PK M
JK
B
Q PK O@ S@
J@
@
?K C F [ R
AL @
K
G
[ J B]
K Rb >
?=@ Z K
J
B I B P JC
=@ T> IK@
JJ Z K
OF KP J
B JJ O[K
P B C
JK P@
S@ [ JK
J @ S@
T B J@
? R
JK O F
^ S@ B P
P@ J@ B
J> R P@
A> =@ ? F
JJC B@
I B@ ?K ZI@
?L F R
K JK G
C B@ S@ J
?D
v
w
v
w
v
w
x
v
x
V
V
V
Y
L
M
L
M
P
Q
L
M
L
M
T
=B
K
W@
v
w
v
w
v
w
v
t
u
t
u
t
u
V
W
V
W
V
Y
P
Q
P
Q
L
M
P
Q
R I@ †@
C
Q> J
@
i−1
I@ †@
CC
i=3
B KC
P@
T= ?C>>
II
?@ K
C
B ?
B@I F A>
K I>
B
G ?> F ZI@
v
w
v
w
v
w
v
v
t
u
t
u
t
u
t
u
t
u
X
Y
X
Y
X
Y
W
P
Q
P
Q
P
Q
L
M
i=0
B = B@ F
C PF R
W@ ? F
K
AL T VF
J@ ZI
] @
^> h H
V
W
V
W
T
V
W
V
W
T
V
T
V
T
T
U
T
U
T
W
W
R
R
P
Q
P
Q
3
2 1 0
3 2 1
3 2
3
%$
T
U
T
U
T
U
R
S
R
S
R
P
Q
T
? F A R@
i
' (
T
U
T
U
T
U
U
P
Q
P
Q
P
Q
R
S
R
1 0
1
L
I> U
KU
=
I@ B
K
= PK
SJ@
#
R
S
R
S
R
S
R
S
R
S
P
Q
R
S
F
G
N
O
N
O
N
O
B O
P@ B F
=@ ? PF
JJC
B
PK
KI B I>
@
I@ CC J@
K C
= PK A B@
GC
SJ@
?F ?D
>
C I R@
A B@ I
C B>
T S \ C>
Q
?B @J
> B
B P@
CC J@ TC
] AS
T I>
B SJ@
B
C PF L
C F I> U
C M
F
LA O@
J@ C
?C F ? B JF
J
=@ @@
B R
C@ P@ B>
=@ JK
JJC S@
J
i
R
>U
JJ>
R
?F
IK@
#
$
)# #
) %
$ %$
$
'
%$
# #
$$
(
# # $$
)
#
R
S
R
S
F
G
N
O
N
O
N
O
F
G
N
O
N
O
N
O
T VF
IK@
W@
i−1
?K ]
K
[ JJ
IK
QI F
@
K
B
B
P@
C
T BF
K
?> B F
R O@
?K \ ?
J@
F
C PF
B
KC U
?> PF
Z?
4
Figure 13:
R
1 0
2 1
2
S
2
?F
?T B F
? _>
S
S@ M
J
R @
> P K AL
U C
R@ I P> [ B
I@= B@ =@
K C J
?C F BA JC
K Q PK
Z B @
JK P
S@ I> U ?@ S@
JC
\ L JK
A
0
S
floor
floor
i = 1, 2, . . .
i
−2
// main loop : find and label cells reachable in i =1 ,2 ,... steps
for ( int i =1;; ++ i ) {
bool progress = false ;
for ( int r =1; r < n +1; ++ r)
for ( int c =1; c <m +1; ++ c ) {
if ( floor [r ][ c ] != -1) continue ; // wall , or labeled before
// is any neighbor reachable in i -1 steps ?
if ( floor [r -1][ c ] == i -1 || floor [ r +1][ c ] == i -1 ||
o
n
? BF
@
G JC
JJC
KC
?C@
?
T>
P@
II
TC
Z
OK
R
R
B
K
PK
[R
R
TC= F
CC
@
KR
Q S>
G@
BD
JK
S@
JC
K
I@ JJ
K
= PK
SJ@
P@
K
I@ J
K
@
Q PK
O@
B
A
B
?LK F
> J>
W@
B
AT
O@
O
>
’X’
B C
J@  ? BK
P@
?F
?K
@
KC
T
>I U R C
T> I> U L@
I TC> B
?F
I PK
F =@ B
K B F ?K B F
CF
W@ J
Q
K R Z?@ F
AL I BK
I
J@ M Z@ >
I> U B O
OC F
@
L
? RF
A
R T
G B
? BK
LC
I RK
^ ?K
’T’
B
O@
T
I> U
= B@
’S’
F @ MNIC
VT F AL
ZI [ B O P@
I
@
=@ @
G JJ
? JK
>
IA>
R =
IK PK
BC
’-’
// add surrounding walls
for ( int r =0; r <n +2; ++ r)
floor [r ][0] = floor [ r ][ m +1] = -2;
for ( int c =0; c <m +2; ++ c)
floor [0][ c ] = floor [ n +1][ c ] = -2;
B =@
K U C P@ M JJC
RK b P> >C
?=@ I B@ B
B AC B PK
=@ K B
JJC B O@>
P
O F I> U ? BK S
B
P L KF
R@
I=@ B> JK
KC G ? S@
?F
JF
Z W@ aC ZKC
JK A ?
F
S@
JC ? JK V
F TF
@ ZI
I V> K R @
Q@ S> G @ Q H
[I M @ I> V
=@ B P
J CF L
?> J ?=K B P
CF
B S@ JK
P
S@
AC F
?J
K ? R> M F
B @ Z
P
W@ \ [ S O@
> T
A=@ JJ>U LC
B O? ?> B
F
] Z O
K W@
OA@ =
T ? PK K BI
B F =B
TZ VF
I@
OT>
J
R
? B P@
> J> Y
K
?C
?C@
XC@
nm
I@
K
W@
T M B
?@
K
O@
=@ I
KO > @K
M JJ U R
B
?K
P@
// dynamically allocate twodimensional array of dimensions
// ( n +2) x ( m +2) to hold the floor plus extra walls around
int ** floor = new int *[ n +2];
for ( int r =0; r <n +2; ++ r)
floor [r ] = new int [m +2];
L@C
P@
// read floor dimensions
int n ; std :: cin > > n ; // number of rows
int m ; std :: cin > > m ; // number of columns
=>
C
?L@
I RK
RF
B
K
I@
?U
? RF
AT = B
?> F
?K B IK
@
R
R> LI>
B @>
P@ I
[? R C J@
K C
C
L F K BI
=K F
JJ> Z P
=K I> B U
B
G ?> F OIK
G
R
?D
F
K BF
M [ JJ
?> F
C BC
I> U > U
B
LC P@
? BK
IK
P@
A
I P@
>
B
^
R
main
// assign initial floor values from input :
// source :
’S ’ - >
0 ( source reached in 0 steps )
// target :
’T ’ - >
-1 ( number of steps still unknown )
// wall :
’X ’ - >
-2
// empty cell : ’ - ’ - >
-1 ( number of steps still unknown )
for ( int r =1; r <n +1; ++ r)
for ( int c =1; c < m +1; ++ c ) {
char entry = ’- ’;
std :: cin > > entry ;
if
( entry == ’S ’) floor [ r ][ c ] = 0;
else if ( entry == ’T ’) floor [ tr = r ][ tc = c ] = -1;
else if ( entry == ’X ’) floor [ r ][ c ] = -2;
else if ( entry == ’ -’) floor [ r ][ c ] = -1;
}
? RF
if (! progress ) break ;
}
KC
H
}
}
IA@
ml
floor [r ][c -1] == i -1 || floor [ r ][ c +1] == i -1 ) {
floor [ r ][ c ] = i ; // label cell with i
progress = true ;
S
B ?
? B F T> F
AT B B>
B G
P@ B B P@
> U ? D =>
JJ> U II
> @
O? F A AC
K ?>
Z B
=> P ? R
R@ OKC F G
IK U T> U Z
Z ?
?L@ R
?@
B >\
C F I [ BI
F
=> \ B U
II@ I P@ C B PF
@ K
=
[ B J ?C F JJ>
?] >
> BK OTC
W@ B I C
Z@
T@= M B ] B>
B@ B IK R
P@ O
KR
B
KG B S> A P@ M
JJ [ R
> K
U B
B ? PF
P@
?L@
?@
XT@ SC
C
B@
P@
floor
? VF
J@
B@ AT F => K J
L@ M [ J
B
P@ B C B
[? R M I>> M T> P@
K
T> A
L F O B F IA T B
=K P K B
h
[ JJ B P@ B
K C C P O@
JJ>
P> [
=K I L LAK
B@
B@ C G S> B
J
KI R AK B ? D ? P@
IK B C@ F
[C AK P I? B@
? F A B F ZI@
@ Z ?@
B ?IK
P@ F
BI
?@
@F
G ?Z F K B C>
R K
B U
R I P@
RF
B F
G ?> F ZA B P
SK
@ =@ JK = Y
TL NMC B>
C
=
K B O@> IK PK
JC
?> ? BK S = B@
> F NMIC
B K
I> U A=> O P@
Z@ [ I@
B
floor
’o’
’\n’
R@
? P@
B
U
S@
−3
>
'
BK
TC
B
B
P@
?F
B@
IZ@
−3
// mark shortest path from source to target ( if there is one )
int r = tr ; int c = tc ; // start from target
while ( floor [r ][ c ] > 0) {
int d = floor [r ][ c ] - 1; // distance one less
floor [r ][ c ] = -3; // mark cell as being on shortest path
// go to some neighbor with distance d
if
( floor [r -1][ c ] == d ) - - r;
else if ( floor [r +1][ c ] == d ) ++ r;
else if ( floor [r ][ c -1] == d ) - - c;
else
++ c ; // ( floor [r ][ c +1] == d )
}
B>
P@
// target coordinates , set upon reading ’T ’
int tr = 0;
int tc = 0;
I> U
JK
G I B@
I BK
B
I
L S@
L@
Z@ M
AB
>C
F
?> B F
K
J@
6
$
)
;
#)
(
B
PF
R
I@
O@
I@
BI
floor
? RF ? P@
AF
Z T
B
P@ B
>\
>> I
IA FU
B
? JK ? P@ F
AT
OA@ A B
T I@
B LK
B TB
P@
AK I@
A [J
IA> S@
I =>
KF
B@ L@
? F C@
B@ AL
ZI@ [ B
C M ]
? RF
?
IK@
T> U
'
)
=
IC B@
IK
@C F @
A
> L
U [B
=@
M G JJC
?K
= PK
B@
>
I P@
B
DU
O@
?Z@
I@K
?F
B>
B
P@
?@
S
while
Figure 15:
T
>
8 12
------X - - - - -XXX - -X - - - - --SX - - - - - - - ---X - - -XXX - ---X - - -X - - - ---X - - -X - - - ---X - - -X -T - -------X - - - -
o
n
qu
{
q
r|
rr
rs
rt
ru
rw
rx
rz
{
P>
=>
// assign initial floor values from input :
// source :
’S ’ - >
0 ( source reached in 0 steps )
// target :
’T ’ - >
-1 ( number of steps still unknown )
// wall :
’X ’ - >
-2
// empty cell : ’ - ’ - >
-1 ( number of steps still unknown )
for ( int r =1; r <n +1; ++ r)
for ( int c =1; c < m +1; ++ c ) {
char entry = ’-’;
std :: cin > > entry ;
if
( entry == ’S ’) floor [ r ][ c ] = 0;
else if ( entry == ’T ’) floor [ tr = r ][ tc = c ] = -1;
else if ( entry == ’X ’) floor [ r ][ c ] = -2;
else if ( entry == ’ -’) floor [ r ][ c ] = -1;
}
ss
sr
G R@
=@
J@
I
TC>
P@
AL
B@
B
sq
L
OC
Cf
ZIK
I>
TZ VF
I@
G f
F
I?
K BF
W@ J
K
AL
M J@
B
P@
T>
AT B
B
> J> Y
C
J
@ YF
?F
F
T> U
>
=KC
@
s|
r
return 0;
?D
// target coordinates , set upon reading ’T ’
int tr = 0;
int tc = 0;
qz
qx
qw
’S ’;
’T ’;
’o ’;
’X ’;
’-’;
rq
<<
<<
<<
<<
<<
// delete dynamically allocated arrays
for ( int r =0; r <n +2; ++ r)
delete [] floor [r ];
delete [] floor ;
=>
floor [r ] = new int [m +2];
qt
qs
ml
// print floor with shortest path
for ( int r =1; r <n +1; ++ r ) {
for ( int c =1; c < m +1; ++ c)
if
( floor [r ][ c ] == 0)
std :: cout
else if ( r == tr && c == tc ) std :: cout
else if ( floor [r ][ c ] == -3) std :: cout
else if ( floor [r ][ c ] == -2) std :: cout
else
std :: cout
std :: cout < < "\n ";
}
{
t|
tq
tr
ts
tx
{
u|
uq
ur
us
int main ()
{
// read floor dimensions
int n ; std :: cin > > n ; // number of rows
int m ; std :: cin > > m ; // number of columns
t
tz
# include < iostream >
qr
// main loop : find and label cells reachable in i =1 ,2 ,... steps
for ( int i =1;; ++ i ) {
bool progress = false ;
for ( int r =1; r < n +1; ++ r )
for ( int c =1; c <m +1; ++ c ) {
if ( floor [r ][ c ] != -1) continue ; // wall , or labeled before
// is any neighbor reachable in i -1 steps ?
if ( floor [r -1][ c ] == i -1 || floor [ r +1][ c ] == i -1 ||
floor [r ][c -1] == i -1 || floor [ r ][ c +1] == i -1 ) {
floor [r ][ c ] = i ; // label cell with i
progress = true ;
}
}
if (! progress ) break ;
}
uu
uw
// dynamically allocate twodimensional array of dimensions
// ( n +2) x ( m +2) to hold the floor plus extra walls around
int ** floor = new int *[ n +2];
for ( int r =0; r <n +2; ++ r)
ux
qq
q|
{
ut
z
x
w
u
t
s r
v
q
tw
tu
tt
6
'
)
'
)
Figure 16:
// add surrounding walls
for ( int r =0; r <n +2; ++ r)
floor [r ][0] = floor [ r ][ m +1] = -2;
for ( int c =0; c <m +2; ++ c)
floor [0][ c ] = floor [ n +1][ c ] = -2;
s
sz
sx
sw
su
st
ooooooX - - - - oXXX -oX - - - - ooSX - oooooo ---X - - -XXXo ---X - - -X -oo ---X - - -X -o - ---X - - -X -T - -------X - - - -
// mark shortest path from source to target ( if there is one )
int r = tr ; int c = tc ; // start from target
F
B]
UF
BC
A=@
?=>
[I
RJ
IK SF
I RK
? BK
CB
? BK
I>
AL
G ] @
B
P@
C
AL F
C J@
B
L>
R@
JC
>
IK
IC B@
F
SJ@
KC
LK
Y
[P
O@
O
[
K
Q B F Q PK
G @C ?@
F
BI
I@ †@ T>
R
IK@ =@
B IK R
P@ I
K
I@ B P [ C
?
@ K
I@
K AR
?C> ?>
GC F
IC B@
K
B
I?
O[
>
F T>
CK R
I@ U
K
B@ J
?K
W@
@
LI>
@
Why arrays, after all?
I B>
IK
B@ F
R
IK
c BF
A=K
B
B
Q
@
A R = B>
I
?> F ?C
F
IC B@ C B@
K
B R
PK >
[T> B K U
II
C [K
FA C
L
[ J A P@ J
?=K M C
? ?C
> F
B =@
LK Y B P@
@ I@
O F IK@
Q BP
@ ?LK
= B> [
G IC A
>
? B@
K BF
J
II@
>I
C
I@
JK
B@
R
B>
KI
IK
[C
?K
?K
?=>
A R =@
? B JF ?> ?I
F
C B@ P@
I
?K BI IC G @
K
?
=
Z@
?K
I>
Q S@ @ F
R
@C@ [I@ AL>
?L F PK I? BK
I
[Z J B> R C B F
?F
WA@ ?  B PK
AB
J ?K R I
>
=K F
SJ@ > R ZIK
U
S@ ? B@ L
Q PK I@ ?L F
Z
I> F ?LK II@
> T F I>
U ? C
B
T
A P@ R@ @ R
I> B@ B>
=
ZIK T B@ A F
G ? R LI
L
>
B A
aJC B JF IT@
> P@
C
P@ [TC @>
M I@
T R KU
I
?C F ? R@ IK
J [C
[
Z
TC
I@
L
2
B
[ BF
AKC
@
=B
CF
CC J@
>
KU
T@=
I
P@
C
L@
MNIC
[S
V>I >>
T
C ? RF
B Z
PK B
B P@
O@ L
IK@ O F
? B
> XI@ P
B T
[@ \ @
C
A B ] G BC
I>
@C U
C
?> F
K
AJ
I>
ZIK
- #}
#
)
#
)
[ BJ
M
LTC F
C@
BF
I> U
JJ@F
ZK
KJ
Q= B F
F
@C B F
J
@ YF
C?@
? RF
AZC
K
ML
IA>
IKK
[J
?F
Z
O@
CS
QI@ M
I@C
?@
T
X@ SC
TC
zt
I
zr
IT
F ?
?D ZP C
? BC
B F O BF
PC F
B P
P@ B
P@
O[K
OI> CK
?K C
B L@
K =K K
C
BK B G @ ==@
CC
=Y
I@
I
Z PF
T=>
BC
J
R
CK
B
P
P@
K bF
=Y
I>
?Z FF
B
K
P@
?> J
=>
M@
ATL
?K
I B@
R
B
B
PK
C@ P@
TI B
?
LF
C
Z
BP
B
P@A
S@
K
I>
R
?L F
ZIK
CF
L
K BI
?K
I B>
R
zs
zq
z|
{
x
RF
[
K
BBK ==
F
= Y ? R@
I@ BK
LK [ JJ
K
@C  ? B P@ L>
RF
F
@
@ BC S@ ? R
JU K F
B> SJ@
B
R> A B> C PF
O IA@ O[K
PK
Q B@ IK
@ LK
I@ ?K [
B ? ?=>
P@ A F
K T ? BK
BBK B F
= Y B> B
I@ B P@
P@ K
O?K A T= B
I> K
BC
ZI A J
B F K I>
B> ?L I
F Z
G R> TC K
L?
F
^ =K P C
T BI
C PF
L> O[K ?=> B F
RF B G C
=K  B PK
?> B F B ^
P@ P@
L>
L
ZIK
I>
A
zx
xx
wx
ux
tx
sx
rx
qx
|x
{
w
wz
IT>
?
I BF
G [K @>
I
T K
@ O@
B> SC
@
B QI
Q P@ I@
?>
c LK
T@ [
T\
?
?LK ?
? F
? B@
IK B
= P ?> F
B@ F K
T= B [ JJ
]
M I@ OI
F
B B@
A P@ ?A F
T
IK
> B B RK
U
B BK
P@
S@
[
?LK F ?>
R
L@ B P@
L> T S>
[I ?
? S@ F RC
>
Z U
IK
?K
I
F
T E IZ G Z P
A K ?B
A
D
>C L K
@ ?L F U
M=
B Z@ C B
PK I >
B I>
B IC LA@
P@
K I@ A@>
BBK JK
B@ J@
=Y
I@ B> R J@ \
? Y K B eC
> IIK K=
OC [C JJ
B ?K B P@
PK
C> B A R LK
?> B
LA@ B@ F BK
=Y
I> I?C I@
C
ZIK > F K ]
I I@
L R@
I LK
? B PF B> ? YF
Y I=
> @K ZK
?K U B@ T S
?C
A> LK @ F
J
I@K T=> FF CC
? BF C > U
C W@
Z > A
[CC B U J>
B@ G OIK ? B FF
@
L
Z
I>
A
A P@ >=
M J AL
T S W J@
A
Q@ B I
?@ >
IZK
O@ NMLC
c JJ
B
C B@ C PF
B@ C F
?
?K R >
R @B
IX@ U KC
T [
?@ K
KB
[T B J G JJ
C@ @
T
R S
I JK ?ZZ
F
AZ@ Z
I> K U
ZIK = JFF
@ BF
LC C
>
? R> U
> L>
? B ? R@
@ I
=@C =>
C
IK AL
[ JF I J@ F
Z@ C
B ?=K
BF
C
M I@
TS
? BF M
?
C
?F
K
=>
II@ G
=B
?LK
I B@
F
B@ F
A JJ
I>
ZIK
LC
B
PK
TB
C@
K
IIK
[C
?K
AR
?>
LK
OI
?=K
[T>
P@
P>
RC
J
B>
>
Z@
CK
^
U
I@ RR T>
CC c B
>
@C
c U
O T? S>
I@ P@
? KR
A> IIK
I> [?
ZIK F
RF
L> =@C
CF
@ Sb ?>
=B B
Q JF
@C B@ R@
= B@
FB ? RF
P
>C ` _
L@ M `
I=K@ ?K
R
K
C
F T P@
>U
AI
?>
I B@
L@
CK
B
Arrays are insecure.
AC RF
>C
K
KJ
B
B
P
AC F
>?
B
B>
I@
O@
O?K
B
U
G
2.6.12 Beyond arrays and pointers
I@ P@
PK
K
F
zu
return 0;
I
P@
>
IIK
SK
=C Y
[C
O
IK R
L?K
M R
B
I@ P@
IK@
B
O>
?
Ia
? F ? RF IK
[C
K U ZC K
= B P> I@
B I B@ Q@
P@
?> C BA [IT
[ J K C@
?=> B PC T U
?F J
>U
? BK F
B I
I@C A P@
?LK
B QI@ [
PK
B T> F C BK
O?@ CC C Y
@@ @= ?K
R G ?> B F K R
J
I> V J>
OT
LK C
B B>
>I P@ QC>
@ @J
B ?
K= F
A J ?>
?> F Q BI F
KF
>B A J
QU I
@F >
M O SJ@
IIK LC
K
[C @ JYF
IK@
}
?=> \
? BK F
I@
?K
JJ
P@
? PK
B
B
// delete dynamically allocated arrays
for ( int r =0; r <n +2; ++ r)
delete [] floor [r ];
delete [] floor ;
O?
K
>
I P@
?
’S ’;
’T ’;
’o ’;
’X ’;
’-’;
T> B
G II a
K
[C
?K
AR
?>
JK
<<
<<
<<
<<
<<
G ?K ?
C@ R @ YJF
Q
?LK @
B = B>
=K F M IC
J
AKC IIK
@ [K
= BC C
> ?=K
U
` _ S@
` ?F
T BI
?U >
T
= R
?> B F =@
C R
?K O
F
R T B P>
= JK
CC B
@C B
? P@
B \ @@
PK
B R
@O B>
C R
AL F TC= F
[ J CC
C
? R> [?
B e BK
Q PK = B F
@ =K J
B@
P@
G I@
T
// print floor with shortest path
for ( int r =1; r <n +1; ++ r ) {
for ( int c =1; c < m +1; ++ c )
if
( floor [r ][ c ] == 0)
std :: cout
else if ( r == tr && c == tc ) std :: cout
else if ( floor [r ][ c ] == -3) std :: cout
else if ( floor [r ][ c ] == -2) std :: cout
else
std :: cout
std :: cout < < "\n ";
}
K
BF
FU
?F CF
Z> [? R
I K
[? R L
K =K F
J
L F [K J
=K J
[ JJ J>
K =K
JJ> B@
M
=K R
? B F PK
C
?ZK WK

IIK @
K ? RJ@
[
P> G Z B
O P
? R@ 
?Y [
> IK
I
O M [ K
% Q@
'
?@
?a
Arrays have fixed length.
B>
@
Q PK
O@
OI>
MN RC
I P@
?D
>
B
Program 16:
K K
Q R AA ?LK
?K J [
F
=@ =K B @ J@
?> F
P>
?L@
O O@
BC
?LK
[? LZ F O?@
T ?P @
B @
L S@ @@ R
IC R B>
B> C
O@ C I@ B>
B>
O F I@ ? F
JJ K G
F
G Z@ B XC@ B
T
a ?@ ? B@ U
[A B =@ M
>
=K F ? U C B PF
J AF
C T TC F
T> J ? ?
T B I@
?> B F
K
L S@ C JF
C F NMIC G B F
B> T =
S
[? R B I V>
K O@ W@
K
L F ? R> A
L
=K
[ JJ B e M ? J@
K ?Y F
JJ> > C
=K O? >
B@ F L@
wx
ww
wu
wt
ws
wr
wq
w|
{
u
uz
U
OF
B
P
OI>
? YF
Z
?F
?> F
Wp
B@
G IC I@
=C F
@
@
f
OF
JJ T
Z@ SF
B ? BJ
Q B> G F
@
=
IC B> @ $
=
?K \ I B>
C
R K
B > JC
P@
I F JK
I@ I
K Z@
J [J
KF I
?> B F @
QL>
]
JK @
I? B@ B P@
F ?
@
B =@
C PF CC
S> [ B F
G >Y >
A
J@
>
B
R
U
F
LF
I JK
B>
B
P@ G
L@
?= PK
CF
TL>
? B JF
@
R
ZC
? B PF
L@
C>
@
Q PK
[ P@
MN[C
?K
K
IIK
A B>
B@
?> R
?L@
A
? BK F
?=@ F I@
C
[ = I> U
]
OF L
B B P@
P
B C
A P@ ? BK
>C RK
C I
F
SF RJ
JF F
[ B IK S
> [I
U
ZI> B
PK
O? F B
=>
Z
?K \ L? S
F
@
CR B
?I PF P@
? YF = JK
CC
Z? ] =K F
F J
? J@ IIK
K
Z B [T
P ?U
@$ =B
= ?> F
IC B> K
J
?=K [ B F
?K \
S@
F R
Lc BC F
@
@
C P@
?=>
@
IK
G #
c
IC
L S@
^
>
F
SJ@ L@ ]
? F TC>
J
` _ ?> B F
` K
I@
IT> B P T>
Z ? B JF
P @
B ?R
T P@ F
C@ W p
> I@
* U C= F
( @
G f
AC F
>C
C
J
C
T> J
?> B F
K
I@
a
S@
^
SJ@
R
LC
OF
B
P
B
C PF
?K
I>
A P@
BC 
G ?F
T Rb
C
B
A P>
@
B
PK
B
B
P@
XTC@
?@
=@
QK
@
B [I
I B@ JK
T S \ IZ@
C B IIK
BF K
[
T= JJ ?K
K
while ( floor [r ][ c ] > 0) {
int d = floor [r ][ c ] - 1; // distance one less
floor [r ][ c ] = -3; // mark cell as being on shortest path
// go to some neighbor with distance d
if
( floor [r -1][ c ] == d ) - - r;
else if ( floor [r +1][ c ] == d ) ++ r;
else if ( floor [r ][ c -1] == d ) - - c;
else
++ c ; // ( floor [r ][ c +1] == d)
}
H
o
n
ml
argc
2
"bool"
2
argv[0]
argv[1]
+, )
F
BA
J@
BA
2.6.15 Exercises
Exercise 55
CY
C BK
OF
B
P
IIK
K
[C
>
U
=
IK PK
c=
Z
?C F
=@C
I>
W B@
L
AF
I> U
LC
I@
[
\
[? R
K
LF
=K
[ JJ
K
JJ>
=K
B@
R
TL
B JF
RF
?L@
C
?> F
K
J]
IIK
K
TL \
B JF
RF
?L@
C
?> F
K
J]
IIK
K
[C
KC
B
P@
LK
I> b
B>
>
J
?F
PK
RK
CY
C BK
==@
CC
LK
R>
[T S
?C F
ZI
?K
Z
?C F
=@C
I>
J@
A BK
L
AF
LC
B
F
AB
I@
I> U
LC
ZIK
I>
A B@
OI
\
H]
q|
{
z
BK
U
[? R
K
LF
=K
[ JJ
K
JJ>
=K
B@
R
?F
B>
K
RK
OI
B JF B@ F
RF A
?L@ I>
C ZI
?> F K
K LC
J]
B
IIK PK
K B
[ I@
K
KR
XTC@
?@
=@
>
TL
\
\
]
C
?> F
K
J]
IIK
K
[C
c

F
C
I>
KF
SJ@
IK
IK
IK
@
? R@
B
B
]
\
[? R
K
LF
=K
[ JJ
K
JJ>
=K
B@
TL \
B JF
RF
?L@
[Q
PK
LC
ZIK
I>
A B@
OI
K
@
F
II
K
[C
?K
AR
?> F
IC B@
ZK
QF
Q> J
?
AL F
A J@
I>
ZIK
L?C
CB
T S>
TZ
R
IK
M R
?K
? BK
IC R@
K
M TR
?
I@
\
]
GG
T= B F
M I JK
[T>
C
T P>
J
R
S@
K
SJ@
G B>
IK
A
?D
x w
y
u
t
s
r
q
JJ>
O
?
>
B
B
PK
S@
S
? BK F
@
R
[S
[? R
K
LF
=
>
=K TL \
?> B F J
BF
RF
?L@
C
?> F
K
J]
IIK
K
[C
>
QU
IK
KF
SJ@
? J@
ZB
P
?=K
K
L>
[I
L@
Y]
Z
=
IC B@
PK
R
R
U
B
=F
C SK
W B@
L
I> U
I@
A B>
C@
T S@
?=K
=
IC B@
IK
= PK
>
[C
K
K
II
?K
B
B
H]
?Y
>
C BK Y =
C I PK
K
?C F O
=@C
I>
A
LK Y
@
B
C PF
O>
G IY
B>
T
P@
?LK F
^
OA@
QI>
B
B
PK
F W@
IL>@
a
IK
B>
C@
O?K
B
PK
? BK
IC R@
?
R
TR
?K \
B
B
[P
]
IIK
K
[C
?K
AR
?> F
IC B@
TL
C
B
T S@
C@
R
OF
B
P
I=K@
O
S@
@
OIK
K
]
B
R
ATL
=>
B>
B@
OF
B
KP
I@ RR
CC
@C
O
P>
R
?> F
I B@
?=>
A=@
M B
?K
A P@
? BK
IC R@
?
T]
? U T R@
A
C F ?=> B F ?>
I@ †@
R>
R
R
F
?=>
B
B
P@
?F
L?@K
?> B F
IK B@
?K
CC
==@
PK
LK
B
?IK
W B@
O
]
?Y
KI U >
IK
[C O
O
PK
?K B
IIK
K
[
M CF
?K
>
=
F P
SJ@ I> U
K ?K
B@ J >
P>
?
I
B
=K
O ?K= ? JJ K I P@
B K F Q BF C
P@
= Z @ ? BI
IC  =@C B P@ C F G F
C
B T A B> Z
? B@ C I> A
K
=
? JF P IZK CC
=
>
G
@C
L B P@
> L
C@
U ?LK
IK
I>
=P
R
C
IZK ? JF
@
? BI F
K
L I
ZK
TZ
C
K
Q PK ?L@
(
@
BC
B> F
U
S@ O@
A
$
?= PK QI>
Z@ F
? RF TC R@
>I BK F
R@I SJ@
L@
B@
G IC
IKK
A
PK
B
P@
CF
G
Ba
B
CA PF
?>
M BF
[T>
C
T P>
GG JR
?
D
G;
I
>
@ ZIK
? B P@ L
Q PK I> U
@ C
B> ? BI
I@ F
Z
=>
AL LK B
=
J@ F ? PF
M
B Z
A P@ B F
I> ?C F
ZIK >
QB
QL@ I@
@ [
[I ?=>
Q
B F ?@
L@ ?
@F
O@ B
Z
C
? BI F
=P
IK
C@
B
B
G J@
=K
C
Z@
I JK
K
?>
IC B@
K
[C
?K
AR
?>
IIK
F
h
P>
LF
J
IK F
AL F
I>
? BK
B
B>
Z@
B
KU
BF
CF
CF
B
C PF
I@ P@
Z@
CK
L@C
L@
c@
P@
BK Y
^
K
U
>
IC R@
L?K
P@
I@
B
R
U
F
? JF
@
M ?K
I B@
L
ZIK
I>
S> ^
P
A BP C F
I> Z@
BC
ZIK T
C
LC SK
IK@ = Y
B>
? R@ F
B
B P@
=G K F C
J T BF
K
?> B F
?F
OF
B
P
B
P@
(
(
OF )
B #
P
AL F
I>
? BK
B
B>
S@
K
SJ@
B>
K
T= B
K
[A JJ
I>
ZIK
L
S@
? PF
R
IIK
K
[C
?K
AR
?> F
B@
MNIC
TS
B
BF
CF
CC J@
K
I B@
BC F
U
K U ? R@

I@> ?> B FF
c M
I B@ B
L? F A P@
K >
B@ ? F
KI R QI B@
IK
[ IK
> KF
U S
= J@
IK PK ?
F
=
IC B@ B P@
B K
PK Q S>
B
=I> A@
I@ @ F
AC =@
?> >
RC => U
B> R@
A
B >
P@ ?
C F
? BI F BC
B>
Z B
P@
I
G C
B
>B
J@
?L@
@
?D
I>
KC
?K
IC B>
IK B@
R
R
C R@
F
M [ BJ
o
n
ml
T
?@
XC@
f
? _>
E@
=
?> B F
G
G f
K
Q S>
G@
S@
? RF
I=
F
J I R@
@ F B>
M R
I@
BF K
C? F [ JJ
T
@ ?
=@C
CK I R@
C
[I ? BK
B>
? Y RJK
> B@
I
OK
P>
T S> O
C
B ? BK
IIK
K
[C I RK
?K R
JF
A R IK S
I
?> F [
B@ ?=>
G IC
? BK F
I@C
?K
K
I@
IK@
G
"bool"
)
PK
]
\
qq
Dispositional.
B
F
[T S
OF
?C F ? B P
F
AZ AI
?> F >
ZIK
I B@ NMC
KI L
B F I B@ F
P K
L@ B@
B F Q>
= @
I
K
I?
qr
Command line arguments.
LC
ZIK
I>
A B@
OI
TB
PF
?= PF
U
qs
2.6.14 Goals
'
$
$
C
F
\
qt
2.6.13 Details
I B@
f]
O
>P
=
@K
IC B@
>
AU
?>
K
K
II
CF
?K
=P
PF
U
qu
Operational.
#
"string_matching2"
\
[
O
R
?K R
?K
Q P@
TK J
@C
>
^
qw
// search string : second command line argument
char * s = argv [1];
<
./ string_matching2 bool
main
G
?> F
BC
B>
B
P@
IC 
@B
J@
?L@
BC
>
KU
I@
c>
I B@
?L F
K
B@
R
IIK
K
[
>
U
=
IK PK
=
IC B@
]
IK@
?F
F
K BF
JF
@
R
[S
B
P@
A
int main ( int argc , char * argv [])
{
if ( argc < 2) {
// no command line arguments ( except program name )
std :: cout < < " Usage : string_matching2 < string >\ n" ;
return 1;
}
L
h]
B@
[A B
@
[CC
BK
I@
A>
K
JF ? B
JK F
I B@ ZC
[C
I@ P@ B@
L
O@ O
? P@
OF
JJ F
S@ B
CK =K J
JC
C BF B
@  P@
R
OF T
B ?U
?K P
W@ ?=> B F
K G
AL
J@ @
TE OF
A JJ
A W@
>C A
@ ? JK
B TF
PK ?
B U
O@ = B
?> F
=K A
JJ K
B I
A P@ K
I> L@
B@
ZIK IC
?F
L
R@
argv[]
c
?
WF
ZK
?L F
TC
KC \ M
J
@ YF
B
C PF
argc
OF
M @ ] Q BP ^
K
? F ? TK J ? P@
@
B ?K R G
C PF [
=KC K ^P \
C
G @ ] RRF F O PF
T=>
?> B F ? = P
^ K
P@ J ? B T?=>
C F
T
IIK ? BI F = J BC
K
B
[C ZAC C R@ ? P@
T
QI> A B P@
L
F
R@ I> I S@
R?> ZIK >
?K
?L U
R B K =>
P@
L
=> L@ ?LK
L @ BC F R
?LK J ? JF
U @
Z@
B? ? R \ K
IT
F JF
F @
Z
K BF T
?L@
JF b \
@ C
BC
R BB
]
O F P@
@
Z
B ?C
BC
P
?F
B F
P@ Z
C C J@ ? F K B FF
? BI F ? BI
J
F B @F
ZC Z C PF R
=KC
// Program : string_matching2.C
// find the first occurrence of a string ( provided as command
// line argument ) within the input text , and output text so far
"string_matching2"
s
"bool"
# include < iostream >
AA
−1
π(n1 ) = n1
&*
$
#
#
#
(n1 )
n
π
' % #
' $
&
'
'
) #
n
$
#
#
\ $
H] & $
]
\
#
]\
#
;
2
#
#
#
#(
(
2
(
#
+ )
+
B
R@
R@
B
#
(
$
j
)
# * % '
* #
+
$
#
(
+
'
(
#
* )
(
6
)
$
I _
K
' L@
I
eC
IT
J@
)7
)
$
A−1
+ 5
#
)
# (
# #
5
Aij
+
n1 = π(nk )
π
π
%
(0
% * $ ' )
))
( # '
# #
# #
i
M
π
( n 1 n2
nk = π(nk−1 )
; i
(
# #
%
3
read_array.C
; i
'
((
n
' 7
'
( - 1 # # +
- ) *
$
6 * #
+
) ; * \ )
) $ ]\ +
] )
$ +
4
<
)
- )
% ( 4 R@
B
IIT EK
) '
C IT e #
- J@ % $ '
'
( #5
$ - + ;
;
!
(M)
$
#
A−1
ij
'
5 4 3 6 1 2
π
)
read_array.C
+
' ) )
# 5
(
' (
#
)
)
);
$ (
#
#
$ )
( ) $ # *
* ( $
- - #
)
n
n
$
.-
E
\
read_array
+
...,
(
$
#
#
)
( i
]
j
# -
# (
( !
)
# #
#
# # ( ' $
- #
3
$$
π
'
n3 = π(n2 ),
(;
π(0), . . . , π(n − 1)
{0, . . . , n − 1}
cycles.C
$ )
)
$
'
B %
# )
*
#
)
+
I?@@
A
#
# $
' ' ( %
' ) )
) #
) ' %$ :
# ' #
)
$ $
# + # ! ' ( $ ( ) - $ #
(
4 #
# * - ) %
)
) (
- $
\
6 # $
]\ ] ; $ ( 9
\ ) $
H ] + + ! #
(
# # sort_array.C
{0, . . . , n − 1}
n2 = π(n1 ),
#
)
) #
# )
[= # = J@ 5
R@ (
=> AL >C '
F
?> B F ' #
#
A
I@
TL
BK
?> B F
i
+
5 4 3 6 1 2
$
Exercise 61
cycles.C
{0, . . . , n − 1}
;) +
$
1
)
(−1)i+j
π
#
% *'
' $
#
#
Exercise 60
(
5
#
'
)
Exercise 59
)
4 '
F
*
RF )
#
)
A−1
ij =
$$
#
n1
5
$
A
#
A
$
(
(
k_composite.C
k
i
n
*
\
;
int
- ' # (
( 7 ( ( $ # +
) # '
# ,
+ 5 ( + ' )
' # (
$ #
)
)
# [= ##
( = J@ .-
R@
=> '
AL >C F ?> B F )
p
]
+
E
#
.+
)
$$
+
' #
n=7
#
%$
%
%
(
* $
'
-
5
# (
) #
%
}
7
0
]\
+
) #
## 7
*
)
#
a
- %
'
i
#
*
#
& &
)
+
;
#
#
-
)
$
# - {0, . . . , n − 1}
H]
\
'
%$
n
i=n
$
'
B@ F
' #
F
*
*
$
int main ()
{
int a [] = {5 , 6 , 2 , 3 , 1 , 4 , 0};
int * p = a;
do {
std :: cout < < * p < < " " ;
p = a + * p;
} while ( p != a );
*
$
)
)
#
4 # #
) (
$ # ( $
( ) %
'
( * ) $
#
# '
+
5
&
) ;
+, $
) - #
>C
E
)
& &
) - $
'
;
#
)
i
=>
'
)
Hint:
A−1
3 3
AL
( #
i
%
$
'
*
# $
)
a
0
;
#
'$ $ $ (( * # %$
( ( # ( +
!
c
D
$$
(
#
p
a
(
%
i
k
a
20 = 2 2 5
0
k
{2, . . . , n − 1}
; * #
#
' <
int
((
invert.C
#
n
p
;(
$
#
# % # % $$ #
)
# %
- #
& ( 6
'
) ;
# .- ) $
+
)
& ( ) < ) # ) )
#
% # )
& (
#
)
#
$$
+ &
)
p
F
n = 1, 000, 000
#
(
' Exercise 57
k
6=2 3
i
Exercise 58
<
$ )
)
4
p
#
* + #
)
; #
$ ) '
; Exercise 56
n
n
$ ) (
(
)
# '
* - ; #
# include < iostream >
i
(Aji )
,
(A)
return 0;
4 3 6 1 2
1 2 3 4 6
π
nk )
n1 , . . . , n k
o
n
ml
)
$
% > U
XC@
) T
# ?@
* =@
@
( J@
?L@
#
BC
B
PK
B
'
!
$ #
'
'
#
(
5
#
#
+
/
$
( (
)
- $
)
)
)
)
{97, . . . , 122}
]\
\
\
H]
' #
$
'
+ % #
7
12
+
*
]
##
* *
#
(
(
$
!
# # ) % )
$
#
) $ '
5
# ) ) 7 (
1 ( #
2 #
( $ '
- # $
6 #
4
# #
# ;( + ;
# ,
+
$$ # *
(
(
$ # $ *
$
#
#
{65, . . . , 90}
)
4 ) #
.-
(
r:
s:
t:
u:
v:
w:
x:
y:
z:
Other :
%
#
(
5
/ (
$$
' $ + #
5 ( # $'
# $
+ ,
# $ # $
+ #
%
#* -
'
27 of 520
0 of 520
3 of 520
20 of 520
10 of 520
30 of 520
43 of 520
4 of 520
0 of 520
I
5
(
5
# $ ! '
!
) )
-
'
(
))
{0, 1, . . . , 127}
’Z’
’z’
L S@
#
#
#
'
%$ # )
#
5 ( .-( $$
$
Exercise 65
; i
( 4
% # )
( '
*
#
i ;( # # #
+ ) ;
$
% #
' ' '
$ ( ) # *
% -
% 6
%$ ;
&
-
#
char
#
#
#
##
)
#
$
(
(
+
%
*
)
$
)
;
6
- # $
(
('
)
<
)
#
'
;
#
frequencies.C
E
)
- # read_array2.C
+
%$
##
)
i:
j:
k:
l:
m:
n:
o:
p:
q:
(
(
)
)
- T" $
?
O? F ? ZT> ? F (
AT B Z #
B G B C PF $
?> B # $
P@
[I J
C= F )
>
U :
#
+
* \
^ $
P@ @K B J@ C #
] I> U
W@
K
AL
J@ C
T P>
J
[R
@F
J
R \
B
P@ f ]
>U
JJ>
’A’
’a’
%
+ )
#
' #
Frequencies:
a:
45 of 520
b:
5 of 520
c:
5 of 520
d:
28 of 520
e:
65 of 520
f:
4 of 520
g:
13 of 520
h:
27 of 520
4
- IK U
C> R
K
I@
4
$
'
% A IA> ( I> $$
?> B F
K ( $$
J
B> B ?T P@
$
)
( #
#
)
#
Exercise 64
?@ S@
int
<
+
# include < iostream >
@
# ' '
$$ <
of a [1][0]
of a [1][1]
26
' (
) $
$
#
5 $$
(
( of a [0][0]
of a [0][1]
of a [2][0]
of a [2][1]
' % '
'
#
$ )
) # ' ( % ) + #
) ) $
# $ '
# #
) 5
$ (
#
!
%
%
\ ] #
# )
n
of a [3][0]
of a [3][1]
#
(
t
}
$
return 0;
$ %
&
$
#
# $
$' '
;
*
$'
'
(
m
m(n − m + 1)
#
int main ()
{
int a [4][2][3] =
{ // the 4 elements of a:
{ // the 2 elements of a [0]:
{2 , 4 , 5} , // the three elements
{4 , 6 , 7} // the three elements
},
{ // the 2 elements of a [1]:
{1 , 5 , 9} , // the three elements
{4 , 6 , 1} // the three elements
},
{ // the 2 elements of a [2]:
{5 , 9 , 0} , // the three elements
{1 , 5 , 3} // the three elements
},
{ // the 2 elements of a [3]:
{6 , 7 , 7} , // the three elements
{7 , 8 , 5} // the three elements
}
};
#
#
#
#
s
π(4) = 0
Q PK
threedim_array.C
a
'
;# #
2
( (123)
)
+
$$
(04)
)
( ( - # $
(
$ #
π(3) = 1,
#
a
'
$
$
#
2
Exercise 63
m
π(2) = 3,
- $
#
Exercise 62
m > 1, n
π(1) = 2,
<
)
- ( #* #
# % - # # # % # # (
#
) # )
(( $ $ ## %
* # $ #
\
% # ] #
)
π(0) = 4,
π
19 of 520
36 of 520
31 of 520
9 of 520
6 of 520
19 of 520
0 of 520
34 of 520
0 of 520
37 of 520
2.6.16 Challenges
a
f
o
n
ml
0x13
char
α − 256
{−128, . . . , 127}
'
#
4
# $
$
- # $
( +
ZI@
$
#
-
$
#
$
R
R@
#
)
# $
# $
'
(
$ $ ' ( # # #
)
(
+ +
$ #
)
<
% )
# %$
4
XBM
α
;
B@
-@
C
'
BK
[S
I>
'
#
)
)
'
$
)
)'
.-(
'
<
@
L@
#
BF
+ ) ; -. # $ # %
(
4 !
( #
) ' + $
)
$ # ! %$ #
$ (
! + ! ( %$
%$ !
# ( + ! #
+ .- + 4
%$ ( + #
+ ! # +
) +
)
# ?=@ F
[=
)
#
#
)
&
! #
# $
%
#
5 (
( #
$ ( '
#
* $
'
#
* $
% # %
' )
)
# $
%
) ' # '
5
) (
$
$
# #
E
test
test
# *
- #
'
$ #
$ (
#
(
* %$ 9
+ ,
#
' ( *
# ##
5
#include
'
#
#
*'
$
##
%
4
'
- $
$
;
+
)
$ + # % %
)
#
# %
4 )
) #
; $ ( $ #
%
- # %
% +
# '
#
)
$
K
AC
@
$
$
#
)
?=
( $ @ F
%$ [=
#
#
$
# * + % * +
$ # #
# 5
5 (
( #
# (
( # %
$ )
))
=@
-
6
-
-
4
'
#
(
#
$
# * % (
# $$
'
(
$
< $
$
' ( $
# ) ) # #
$
( ;
* (
#
n
ml
o
f
f
( '
#
$
(
#
$
$
$
(
#
&
* i ;
(
; #$ )
(
) $ $ #
%
#* '
(
$ #
% ;
- ( $
+
;
1 15 + 3 = 19
8
)
( %
#
#
(
-
* %
00010011
1
(
$
xbm.C
XBM
0x13
-.( (
#
' +
( JJ # $$ K
1
di
$
'
#
test
10, . . . , 15
{0, . . . , 255}
{0, . . . , 255}
'
XBM
*
( *
'
' (
:
#
% ) (
; + ( ( (
# $ -. ; ) + )
'
- ( i
# ; ) # $ ) #
( # $ % # (
$ ) + $
(# ' *
$ - $
#
'
# !
)
)
$ # ; ( #$
'
#
+
%$ ( ! )
(
(( $
##
) # + $ # %
##
# #!
'
!
# $ '
$! !
+
#
#
'
'
% # % # (
# %$
(
!
;) i$ #
$
#
# '
-
)
%
f
16d1 + d2
#
6
;
)
#
a
$ ' (
#
$$
# )
$
)
i−1
7
0x00
2
$ * < ) # %
' % $
# %
$
'
$ ( % # $$ - $
# $ - )
7
$ %
% $
$
#
#
$
# +.
+ $
#
( %
#
$ ;
# (
i
0x15
##
# define test_width 16
# define test_height 7
static char test_bits [] = {
0 x13 , 0 x00 , 0 x15 , 0 x00 , 0 x93 , 0 xcd , 0 x55 ,
0 xa5 , 0 x93 , 0 xc5 , 0 x00 , 0 x80 , 0 x00 , 0 x60 };
#
$
#
%
# (
)
+ #
XBM
test
#
#
!
- )
4
' (
'
)
a
$$
test_width
## + '
- # # 32
#
3
)
# LK
I=>C +
% ( ' # ) )
(
(
# #
#
;)
##
( '
;(
i
shortest_path_fast.C
1
( $
$
(
- #
%$
4
#
ak
16
; )
# $ ; )
# $ ; ' + #$
# .+ .-
$
# *i
% W P@
K
- R@
=
F
LK
J
JF
' ( I B@
K
J
+ # '
)
(
) $ (
#
#
#7
<
) ! 7
# j
XBM
3
32
XBM
XBM
(
'
% - #
$
! ( ) ;
; # - # $
)
$
6 +
(
Exercise 67
k
(
' #
(
$
#
(
'
# 0xd1 d2
0x00
- ( .+
(
#
Exercise 66
i
k
{0, ..., 9, a, . . . , f}
19
0
read_array.C
XBM
XBM
# define rotated_width 7
# define rotated_height 16
static char rotated_bits [] = {
0 x3c , 0 x54 , 0 x48 , 0 x00 ,
0 x04 , 0 x1c , 0 x00 , 0 x1c ,
0 x14 , 0 x08 , 0 x00 , 0 x1f ,
0 x00 , 0 x0a , 0 x15 , 0 x1f };
test_height
test_bits