[PDF]

!#"
2.6 Arrays and pointers
$%'&)(*,+.-/*0+21435&+6&7879&:<;=*>1@?.3BAC1EDF&HGI*0+.-J&LKNM9*,O,OP:Q%9787R3B7KS*>MFT9%8U
:V3B+(1@?.%W&)T8*,OX*,1>:Y3[Z\93BDW]^O_%814%E+`3BaI*b\9%RMEUT8:c1@?.%E1>*,DF%d:V3BAY-)%81e1@?C&H1
78*0-B?)1>f:V3BA5&7R%g+`3hOi3B+.-%R7h&j\'3BDW]^O_%814%k+`3Ba#*l\9%Im
npoI&78+`%rq21>7R3BACMR1>78As]2futvWvwq21>:sOi%c&+(Jx%'\8?+y*lz8A{%k|~}k
x€?*>MMI%'\81>*b3B+Q*,+21>793I(Ap\'%8M‚&787'&:ƒM„&HM„\93B+21b&*0+`%R7!MZI3B7…MI%'z8A{%R+`\9%RMS3[Z„3T,o#%9\R1@MS3[Z
@1 ?.%M†&D‡%1>:!]y%Rfp;=*,1@?W79&+(~3BDˆ&~\9\'%8MRM143d*,+(*0a#*l(A^&HOsDF%RDFT9%R7!Mu3[Z=1@?.%
MI%'z8A{%R+`\9%†m
}‰+&787'&:c*,Mu1@?.%uD‡3MR12]278*,D…*>1>*,aƒ%rT8AC1&H1Š1@?.%dM†&D‡%u1>*,DF%W&ga%R78:‚%>‹6\R*l%R+21
\'3B+2U
1b&*0+`%R7ZI3B7WMR143B78*0+.-Bf]2793#\9%8M9M9*,+.-Bf&+(„*,14%R79&H1>*0+.-j3Ba%R7kO_&7b-%…&D‡3BAŒ+21@Mc3[Z()&H1b&)m
3BAŽ;=*>O0O€&HOM†3„O_%'&78+&)T93BA.1].3B*,+214%R7!M&HMc%‘8]^OX*l\R*>1‰3T>o#%'\81u&)()(7R%8M9MI%8M&+(‡&)TR3BAC1
1@?.%R*075\8O_3MI%Ž7R%8O’&H1>*b3B+2MR?*X]“;=*>1@?6&7879&:sM†m ”j?*>O_%/1@?.%QtvWv MR1b&+()&79(•OX*–T879&78:
\'3B+21b&*,+2MdO_%8MRM=]278*,D…*>1>*,aƒ%r&+(k-%R+`%R79&HO0OX:‚TR%81@14%97k&HO14%R78+&H1>*0a%8M9f—1@?.%g˜R™Bš~˜R›'œV4žrTR%RU
?*0+(‡&7879&:sM&+(W]y3B*,+214%97!Mc&7R%…3[ZeZ9AC+()&DF%R+21b&HO*,Dr]y3B7!1b&+`\9%†m
>Ÿ š„ ƒ›9˜9[¡¢™Bš ƒ£¥¤ ™Bšc˜R™Bšs4¦4™B§yžb©¨†[›9ª›Ršs[ž9«s¬=›­V¨R®›‰§¯›8¨†¦[š~›R°…¨†±y™B²)—[­~›˜R™Bš~˜R›'œV™B³^¡¯[›9¦[¨†[¡¢™Bš £
´)™#¦‰›'µ~¨IªkœV§¢›I«C¬=›˜8¨Išjš~™!¬¶¡¯[›9¦[¨†[›·™!®›9¦u4­V›rž4›R¸s²~›Rš~˜R›W™B³€šƒ²~ª±y›9¦[ž
¨Iš~°Fœ.›9¦[³’™#¦[ª
1, 2, . . . , n
ž4™Bª›e™#œy›'¦©¨†[¡¢™Bš~ž§¯¡¯¹›=¨I°~°~¡¢š~º‰²)œk¨I§¢§ƒ[­~›=šƒ²~ª±y›9¦[ž9«B™#¦¡¢°~›Ršs[¡¯³¢»¡¢š~º[­~›eœ~¦[¡¢ª›—šs²Vª±y›9¦4ž¨Iª™Bš~º
[­~›Rª £ ƒ¡¢ª¡¯§’¨†¦[§¯»«¬=›‰˜8¨Iš„¡¯4›9¦©¨†[›™!®›9¦
4­V›‰™ƒ°~°„šs²~ªr±y›'¦[žR«[­~›œy™N¬=›'¦[ž™B³{–¬=™)«)›'[˜ £
Ÿ>šW¦[›R¨I§V¨†œ~œŒ§¯¡¢˜8¨†[¡¯™BšVž9«I­~™N¬=›'®›9¦8«B¬=›=™B³¢[›Ršk­V¨R®›e[™‰œ~¦[™s˜R›Rž4ž¼@¨Iš~°r¡¢šWœŒ¨†¦b[¡¢˜R²~§’¨†¦p¡¯[›9¦[¨†[›=™N®›'¦‘½
ž4›R¸s²~›Rš~˜R›Rž
™B³e()&H1b& £ ´~™#¦›'µ)¨IªkœV§¢›#«s¡¢³^»™B²…¬¨Išse[™r¡¢°~›RšH[¡¢³¢»k[­~›ª™!®¡¢›[­~›8¨N[›9¦[ž=¡¢š[™!¬š…4­Œ¨N
ž4­~™!¬¾»™B²)¦°~›Ržb¡¯¦[›R°cª™N®ƒ¡¢›
[™Bš~¡¢ºB­H8«»™B²h­V¨R®›4™r¡[›9¦©¨†4›™N®›'¦4­V›žb›R¸ƒ²~›Rš~˜R›‰™B³{ª™!®¡¯›[­~›8¨†4›9¦
¦[›9œ.›9¦4[™B¡¯¦4›Rž £W¿ ­~›Rž4›r¦[›9œy›'¦4[™B¡¯¦[›9žuªr²~žb±y›Wžl[™#¦[›R°jžb™Bª›9¬­~›9¦[›I«p¨Iš~°S[­~›9¦[›gªr²~žb±y›W¨¬¨R»‚[™
¡¢š~žbœy›9˜94­V›9ªÀ¡¯šh[²)¦[š £ Ÿ>š‚Á‰·«V¬=›‰˜8¨Iš„°~›8¨†§^¬
¡¯[­cž4²~˜‘­„[¨Ižb¹ž=±ƒ»…²~ž4¡¢š~ºY&7879&:ƒM £
2.6.1 Array types
à g
𠍆¦4¦©¨R»r™B³C§¢›9šVº#4­
¨†ºBº#¦[›Rº¨†[›9ž ™#±ŒÄ–›R˜94ž™B³V[­~›uMN&D‡%»ƒœy› ¡¢šs[™u¨ž4›R¸s²V›9šV˜9› £Š¿ ™d¨I˜9˜R›Rž4ž
™Bš~›·™B³`[­~›¨IºBº#¦[›Rº¨†4n›R°‚™#±ŒÄ–›R˜94ž·¼,[n­~›h%8O_%RD‡%9+21@MB½'«.¬=›·²~ž4›·¡¯4žE*,+(~%‘/™#¦·M9A{T8MI\R78*]^1¼,œ.™Bž4¡¯[¡¢™BšŒ½
¡¢š<4­V›cž4›R¸s²~›Rš~˜R› £ à §¯§=4­V›9ž4›h§¢›9šVº#4­)Å ž4›R¸s²~›Rš~˜R›Ržk³’™#¦[ª ¨Iš5¨†¦b¦©¨R»Æ»sœy›…¬
­V™Bžb›c®I¨I§¢²~›¦©¨Iš~ºB›
˜R™#¦4¦4›Ržbœy™Bš~°~žE[™„[­~›kª¨†4­V›9ª¨†[¡¢˜8¨†§p»ƒnœy› n £ Ÿ>šŽ[­~›˜R™BªkœV²)[›9¦RÇ¥ž‰ª¨I¡¢šjª›Rª™#¦b»«p¨I𯍆¦b¦©¨R»
™ƒ˜9˜R²)œŒ¡¯›Rž
¨˜R™BšH[¡¢ºB²~™B²~ž=œŒ¨†¦b8«¬¡¯4­…[­~›‰›R§¢›Rª›RšH[ž=žb[™#¦[›9°„ž4¡¢°~›'Å,±ƒ»sÅ>ž4¡¢°~›g¼,ž4›R›u´p¡¢ºB²)¦[›uȽ £
É^›'e²~žežb©¨†¦4Š±ƒ»kžb­V™!¬¡¯šVºE¨Išc¨†¦4¦©¨R»k¡¯š…¨†˜9[¡¢™Bš2ʗË=79&H143MR1@?.%R+`%RMŒÌ)qy*b%9a%·¡¢že¨u³_¨Ižbeª›94­V™s°³’™#¦
˜R™BªkœV²)[¡¢š~º·¨I§¯§Cœ~¦[¡¢ª›
šs²~ªr±y›'¦[žež4ª¨I§¢§¯›9¦Š[­V¨Iš…¨EºB¡¯®›Ršcšƒ²~ª±y›9¦ «±Œ¨Iž4›R°c™Bšh˜'¦[™Bž4ž4¡¢š~º™B²)e[­~›
šƒ²~ª±y›9¦[ž[­V¨†Š¨†¦[›š~™#Šœ~¦[¡¯ª› £ Ÿ,—¬=™#¦b¹žŠ§¯¡¯¹›[­~¡¢ž9Êp»™B²¬
¦[¡¯4›°~™!n¬šk[­~›
žb›R¸ƒ²~›Rš~˜R›™B³yšs²Vª±y›9¦4ž
±y›9¬=›R›9š
¨Iš~°
«s»™B²c¨I§¯¬¨R»žºB™d[™u[­~›š~›'µŠšƒ²~ªr±.›9¦Šš~™#Š˜9¦[™Bž4ž4›9°…™B²)
£ s©¨†¦44¡¢š~ºd³¢¦[™Bª
n−1
»›98«)¦[›'œy™#2¦4¡¯¨Iž
œ~¦[¡¯ª›#«)¨Iš~°h[­~›Ršh˜9¦[™B2ž4ž™B²~
¨I§¢§y¡[žeœV¦4™#œy›9¦ªW²~§¯[¡œŒ§¯›Rž £
É^›'8Ç¥ž€šV™#€°)¬=›R§¢§~™Bšk[­~›
˜9™#¦4¦[›R˜94šV›9ž4ž—™B³C[­~¡¢žª›9[­~™s°W±V²)ŠºB™d¦4¡¢ºB­s[™u4­V›¡¢ªkœV§¢›Rª›RšH©¨†[¡¯™Bš £
Ÿ>³»™B²5[­~¡¢š)¹¨†±y™B²)g¡k³’™#¦¨Sª¡¢šƒ²)[›#«[­~›hª¨IĖ™#¦W¸ƒ²~›Ržb[¡¯™BšJ¡¢žg[­~¡¢ž9Êh­~™N¬Í°~™j¬=›h˜9¦4™Bž4ž™B²)
šƒ²~ª±y›9¦[ž[Î
€
`©
!I¤
³’™#¦d4­V›W§¢¡¢žbR«2¬
­~›9¦[›
¿ ­~›W³’™B§¢§¢™!¬¡¢š~ºœ~¦[™Bº#¦©¨Iª ²~ž4›Rž·¨Išj¨†¦4¦©¨R»S–»sœy›W®I¨†¦[¡¢¨†±V§¢›
crossed_out
¨IšH»Æ®I¨I§¢²~›
¡¢ž™B³
»sœy›
¨Iš~°<¦4›9œ~¦[›Rž4›RšH[žW4­V›S¼>˜©­V¨Iš~ºB¡¢š~ºH½E¡¢š~³’™#¦[ª¨†[¡¢™Bš
crossed_out[i]
bool
¬­~›94­V›'¦‰4­V›ršƒ²~ª±y›9¦ ­V¨Ižu¨I§¯¦4›8¨I°)»Y±y›R›Rš‡˜9¦[™Bž4ž4›9°j™B²)d™#¦‰š~™# £ à ¦4¦[¨8»S¡¢š~°~¡¢˜R›9žu¨†§¯¬¨R»žžb©¨N¦4
i
³¢¦[™Bª
«2ž4™…¡¢š‡™#¦[°~›9¦[™c
ºB›9‰[™c¡¢š~°V›‘µ
«2¬=›rš~›R›R°Ž¨†šj¨†¦4¦[¨8»‚™B³€§¢›Rš~º#[­
£¿ ­~›œV¦4™Bº#¦©¨Iª
0
n−1
n
¦[²~š~
ž `¦©¨†4™Bžb[­~›Rš~›RžRnj ƒ¡¢›9®›u³’™#¦
£
n = 1, 000
# include < iostream >
// Program : eratosthenes.C
// Calculate prime numbers in {2 ,... ,999} using
// Eratosthenes ’ sieve .
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;
}
Program 13:
]27939-M%R7'&H143MR1@?.%R+`%8M†m@t
à š5¨†¦b¦©¨R»Ž®#¨†¦4¡’¨†±V§¢›‚¼>™#¦rž4¡¢ªkœV§¯»j¨†¦4¦©¨R»~
½ c¬¡¯4­
›R§¯›Rª›Ršs4ž·™B³dAC+(~%R7!OP:H*,+.n > 0
1>:!]y% ¡¢ž°~›VšV›9°h[­)¦[™B²~ºB­h[­~›‰³’™B§¢§¢™!¬¡¢š~º·°~›R˜R§’¨N¦©¨†[¡¢™Bš £
Definition.
"!$#&%"'
(
›9¦4›#«)"!#*%…ªr²Vžld±y›g¨\93B+2MR1b&+21%‘8]27R%8MRM9*l3B+ ™B³e¡¢šs4›Rº#¦©¨I§»ƒœy›g¬
­~™Bž4›g®I¨I§¢²~›g¡¢ž
¨IªkœV§¢›#«2§¢¡[›9¦©¨I§¯ž‰§¯¡¯¹›
1000
«p™#¦E¨†¦[¡¯[­~ª›94¡¢˜·›'µœ~¦[›9ž4ž4¡¢™Bš~žE™!®›9¦·§¢¡[›9¦©¨I§¯žr¼,§¢¡¯¹›
1+1
£ ´)™#¦E›'µsÅ
½‰¨†¦[›W˜R™Bš~žb©¨IšH
n
!
'› µƒœV¦4›Rž4ž4¡¢™Bš~žs[­~›9¦[›¨†¦4›™#[­~›9¦e˜R™Bš~žb[¨IšsŠ›'µœ~¦[›Ržbž4¡¢™Bš~žR«ƒ±V²)e¨I§¯§Œ™B³y[­~›Rª ­Œ¨R®›
4­V›œV¦4™#œy›9¦4»g4­Œ¨N
[­~›R¡¯¦®#¨†§¢²~›E¡¢ž¹ƒš~™N¬
šF¨N˜R™BªkœV¡¢§¢›[¡¯ª› £=¿ ­~¡¢ž¨I§¢§¢™!¬ž=[­~›E˜R™BªkœV¡¢§¢›'¦4™VºB²~¦4›E™B²)­~™N¬ªW²~˜©­
ª›Rª™#¦4»g[­~›d¨†¦b¦©¨R»c®I¨†¦[¡¢¨†±V§¢›šV›9›R°~ž £
ž «.±V²)‰¬=›œV²)‰4­V¡¯ž¡¢š‡°~™B²)±V§¢›·¸ƒ²~™#[›Rž‰­~›9¦[›c¼>™Bš~§¯»„[™c™Bª¡¯4­V›9ª
¿ ­~›»ƒœy›™B³ W¡¢
[n]
§’¨†4›9¦‘½ £h¿ ­~›k¦[›8¨†ž4™Bš¡¯žd[­V¨† ¡¢ž·š~™#E[­~›k™ g˜R¡’¨I§ŠšŒ¨†ª›#ÊE¬=›˜8¨Iš2Ç d¬
¦[¡¯4›
«³’™#¦
int[5] a
›'µ)¨IªkœV§¢›#«ƒ[™W°~›R˜R§’¨†¦4›d¨Išh¨†¦4¦©¨R» [n]™B³^–»sœy›
£
¡¢ž a n «[­~›
žbint[5]
›9—™B³y¨†§¢§~ž4›R¸ƒ²~›Rš~˜R›9ž
¬¡[­k¨I§¯§ ±.›R¡¢š~º
¿ ­~›®#¨I§¯²V›¦©¨Iš~ºB›™B³ [n]
(t1 , t2 , . . . , tn)
™B³.»ƒœy› —£s¿ ­~›²~š~°~›9¦[§¯»ƒ¡¢š~ºd»ƒœy› ª¡¢ºB­s³’™#¦e›‘µ~¨IªkœV§¢›=±y›¨IšH»k³’²~š~°V¨Iª›Ršs[¨I§)–»sœy›E¼>§¯t¡¯¹i ›
«
«B™#¦
½'«B¨Iš~°¡¢š·[­~¡¢ž˜8¨†ž4›#«#[­~›—®I¨I§¢²~›Rž™B³)[­~› ¨†¦4¦[¨8»d›R§¢›Rª›9šs[žp¦4›Rª¨I¡¢šE²~š~¡¢š~¡¯[¡¢¨I§¢int
¡ R›9°
bool
n
±ƒ»[­~›u°V›double
Œš~¡¯4¡¢™Bš £
¿ ­~›Y³_¨I˜'k[­V¨†k[­~›Y¨N¦4¦©¨R»J§¢›9šVº#4­5ªW²~žbW±y›„¹š~™!¬šQ¨†k˜9™BªkœŒ¡¯§¢›c4¡¢ª›…˜9§¢›8¨†¦[§»<§¢¡¯ª¡¯[ž·[­~›
²~ž4›R³’²~§¢š~›Rž4ž‰™B³€¨†¦4¦©¨R»Y®I¨†¦[¡’¨†±V§¢›9ž £ ´)™#¦u›'µ~¨IªkœV§¢›I«Œ[­~¡¢ž§¢¡¢ª¡©¨†[¡¢™Bšc°~™ƒ›Rž‰š~™#‰¨I§¢§¢™!¬6²~ž[™¬
¦[¡[›¨
®›9¦[žb¡¢™Bš™B&
³ `¦©¨†[™Bžl[­~›Rš~›RžRÇHž4¡¢›9®›¡¢šg¬­~¡¢˜©­r[­~›
šƒ²~ª±y›9¦ ¡¢ž¦[›8¨I°³¢¦4™Bª [­~›¡¢š)œŒ²) £ ²~¬=›¬
¡¢§¢§
ž4­~™#¦4[§»‡ž4›9›­V™!¬ [­~¡¢žu¦[›9žb4¦[¡¢˜'[¡¢™BšŽ˜8¨Išj±.›k™N®›'¦[˜R™Bª› •n³’™#¦E4­V›W[¡¢ª›·±y›R¡¢š~º)«§¯›98Ç¥žuž4¡¢ªkœV§¯»‚§¢¡®›
¬¡[­h¡¯ £
2.6.2 Initializing arrays
¿ ­V›Š°V› Œš~¡¯4¡¢™Bšd™B³~¨Iš¨N¦4¦©¨R»u¬
¡¯[­E²~š~°~›9¦[§¯»ƒ¡¢š~º
³’²~š~°V¨Iª›Ršs[¨I§B–»sœy›—°~™ƒ›9žš~™#¡¢š~¡¯[¡¢¨I§¢¡
R›{[­~›Š®#¨†§¢²~›Rž
™B³p[­~›u¨†¦4¦©¨R»c›R§¢›9ª›Ršs[ž £ ›d˜8¨Iš„¨Iž4ž4¡¢ºBš…®#¨I§¯²V›9ž[™r[­~›d›R§¯›Rª›Ršs4ž¨†³¢[›9¦4¬¨†¦4°Vž‰¼>§¢¡¹›‰¬=›‰°~™g¡¯¡¢š
`¦[™Bº#¦©¨Iª 8" ½'«s±Œ²)e¬=›˜8¨†šh¨I§¯ž4™·œV¦4™N®ƒ¡¢°~›[­~›®#¨I§¯²V›9ž°~¡¯¦4›R˜9[§¯»«ƒ¨Iže¡¢š[­~›³’™B§¢§¢™!¬¡¢š~ºE°~›R˜9§’¨†¦©¨†4¡¢™Bš
žb©¨N[›Rª›RšH £
int a [5] = {4 ,3 ,5 ,2 ,1};
ƒ¡¢š~˜R›g4­V›Wšƒ²~ª±y›9¦E™B³=¨N¦4¦©¨R»‡›9§¢›Rª›RšH[žd˜8¨†šj±y›k°~›R°~²~˜R›R°/³¢¦[™Bª
OP*>MR1@«)¬=›‰˜8¨IšY¨I§¯ž4™r¬¦[¡¯[›
[­~›W§¢›Rš~º#[­Ž™B³—[­~›h*0+y*>1>*l&HOP*H%R7
int a [] = {4 ,3 ,5 ,2 ,1};
¬
¡¯[­~™B²)¨†šs»Y¡¢š~¡¯4¡’¨I§¢¡
R¨†[¡¢™Bšc¡¢ž¡¢šH®#¨†§¢¡¢°2«V4­V™B²~ºB­2«.ž4¡¯šV˜9›·¡¯°~™ƒ›Ržš~™#
¿ ­V›·°~›R˜9§’¨†¦©¨†4¡¢™Bš
³’²~§¢§¯»°~›9[›'¦[ª¡¢š~›[int
­~›‰»ƒa[]
œ.›u™B³ £ ›‰ž[¨R»c[­V¨† ­V¨Ižu*0+`\93BDW]^O_%814%g1>:N]y%W¡¢šh4­V¡¯ž˜R¨Iž4› £
a
a
2.6.3 Random access to elements
¿ ­V›dª™Bžb˜R™Bªª™Bšh¨Iš~°‚²Vžb›R³’²~§p¬¨R»„™B³¨I˜R˜R›9ž4ž4¡¢š~º¨Iš~°‚ª™ƒ°~¡¢³¢»ƒ¡¢š~ºr[­~›E›9§¢›Rª›RšH[ž
™B³¨IšS¨†¦b¦©¨R»
¢¡ ž=±ƒ»‚79&+(~3BD &~\9\'%8MRM £ Ÿ>³"!#*%¡¯ž™B³{¡¢šs[›9º#¦©¨I§y»ƒœy›u¨Iš~°„­V¨Iž=®#¨I§¯²V› «)[­~›u§¯®I¨I§¢²~›
i
"!$#&%'
¡¢ž=™B³{4­V›»ƒœ.›u²~š~°~›9¦[§¯»ƒ¡¢š~º4­V›‰¨†¦b¦©¨R»
¨Iš~°…¦4›R³’›9¦[ž[™r4­V› Å>[­…›R§¢›Rª›9šs¼>˜R™B²~šH[¡¢š~º³¢¦[™Bª
½—™B³
a
i
0
£€¿ ­~›šƒ²~ª±y›9¦ ¡¢že˜8¨I§¢§¯›R°[­~›*0+(~%‘F™#¦‰M9A^T!MI\R78*X]^1™B³2[­~››R§¢›Rª›9šs £ Ÿ>³ ¡¯ž=4­V›§¯›Rš~º#[­…™B³ «
a
[­~›‰¡¢š~°V›‘µ ªW²~žbiž[¨†4¡¢ž4³¢»
¡¯ž˜R¨I§¢§¢›R°c[­~›WM'A{n
T!MI\978*]^1u3R].%R79&H143B7 £ a
£€¿ ­~›u™#œy›9¦©¨†4™#¦
i
0 i<n
[]
¿ ­~›cž4™Bª›9¬
­Œ¨N·žb4¦©¨†šVºB›°~›R˜R§¢¨†¦©¨†[¡¯™B𯳒™#¦4ª¨†·™B³¨†šJ¨†¦4¦[¨8»«`¬
¡¯[­ÆšV™S›'µƒœŒ§¯¡¢˜R¡¯E»sœy›…šV¨Iª›
¨†œ~œy›8¨N¦[¡¢š~º)«¡¢žª™#[¡¯®I¨†[›R°±ƒ»[­~›‰ž4²)±Vž4˜9¦[¡¯œ~™#œy›9¦©¨N[™#¦ £ Ÿ>š~°V›9›R°2«~4­V›‰°~›R˜R§’¨N¦©¨†[¡¢™Bš
€
`©
! È
"!$#&%"'
˜8¨IšW±y›¦4›8¨I°¨Iž !$#&% '~¡¯ž€™B³V–»sœy› £ Ÿ>šW[­~¡¢žž4›Rš~ž4›#«s¡¯Š¡¯ž€¨†šk¡¢š~°~¡¯¦[›R˜9°~›Vš~¡¯[¡¢™Bšr™B³ Ç ž»ƒœ.› £
a
¿ ­~›kÁ‰ §’¨Iš~ºB²V¨IºB›·™ ›9¦4žuš~™c³’²Vš~˜94¡¢™BšV¨I§¢¡¯»„³’™#¦d¨I˜R˜9›Rž4ž4¡¢š~º[­~›W§¯›Rš~º#[­
™B³^¨Išh¨N¦4¦©¨R»Y¼>ž4›9›‰ ƒ›R˜9[¡¢™Bš ƒ£ È £ ¤ ±y›R§¯™N¬³’™#¦=ª™#¦[›™Bš[­~¡¢ž©½ £ à ž—4­V›œV¦4™Bº#¦©¨Iªª›9¦8«):V3BA
ªW²~žbd¦[›Rª›Rª±y›9¦‰[­~›§¢›Rš~º#[­Ž»™B²)¦[ž4›R§¯³@«¨Iš~°Q:V3BA¾¨N¦[›k¦[›Ržbœ.™BšVžb¡¯±V§¢›k³’™#¦ª¨†¹ƒ¡¢š~ºhž4²)¦[›
[­V¨†¨ºB¡¯®›Ršg¨†¦4¦©¨R»·¡¯šV°~›'µ ¡¢š~°~›R›R°rž[¨†[¡¯ž V›Rž
«B¬­~›9¦[›
¡¢ž[­~›=§¢›Rš~º#[­r™B³V4­V›
¨†¦4¦©¨R» £ Ÿ>š~°V¡¯˜R›Rž[­V¨†‰¨†¦[›·š~i™#¡¢š‚[­~¡¢ž¦©¨†šVºB›r0¨†¦4 ›·i˜8¨I<§¢§¢›9n°Q3BAC13[Z…nTR3BAC+( £ š~§¢›Rž4ž»™B²)¦
˜R™BªkœV¡¢§¢›9¦d™ ›9¦4ž·žbœy›R˜R¡ Œ˜°~›9±V²~ºBºB¡¢š~º„³_¨I˜9¡¢§¢¡¯[¡¯›RžR«p[­~›²~ž[¨IºB›™B³=™B²)bÅ>™B³¯Å>±y™B²~š~°¡¯šV°~¡¢˜9›Rž
¡¢šJ[­~›„ž4²)±Vž4˜9¦4¡¯œ~™#œy›9¦©¨N[™#¦k¡¢ž…+`31°V›'[›R˜9[›9°¨†W¦[²~šs[¡¯ª›h¨Iš~° §¢›8¨†°Vžr[™Ž²~š~°V› Œš~›R°
±y›R­V¨R®¡¢™#¦™B³p4­V›œ~¦[™Bº#¦©¨Iª £
Watch out!
›=­V¨R®›
¨I§¦[›8¨I°)»·°~¡¢ž4˜9²Vžbž4›R°W4­V›e[›'¦[ª6¦©¨Iš~°~™Bª“¨I˜R˜R›9ž4ž€¡¯šW˜R™Bš~š~›R˜94¡¢™Bšr¬
¡¯[­[­~›=˜R™BªkœV²~4›9¦8Ç¥ž
ª¨I¡¢š/ª›Rª™#¦b»J¼ ƒ›R˜'[¡¢™Bš #£ ƒ£ " ½Š¦©¨Iš~°~™Bª ¨I˜R˜R›9ž4žWª›R¨Iš~ž4­Œ¨NY%Ra%R78:Q¨†¦b¦©¨R»/›R§¢›Rª›RšH˜8¨IšÆ±y›
¨I˜R˜9›Rž4ž4›R°Ž¡¯š‡[­~›Wž4¨Iª›²Vš~¡¢³’™#¦4ª ¬¨R»«{¨Iš~°F¬
¡¯[­<¼>¨I§¢ª™Bžb‘½=[­~›Wž[¨†ª›W¨†˜R˜R›Rž4ž‰[¡¢ª›#«yš~™…ª¨†4[›9¦
¬­V¨†g¡¯[žk¡¯šV°~›'µ<¡¢ž £ ®I¨I§¢²V¨†4¡¢š~ºF[­~›„›'µƒœ~¦[›Rž4ž4¡¯™Bš
¡¢ž¨Ižk³_¨†žbc¨Ižk›9®I¨I§¢²V¨†4¡¢š~º
£
a[0]
a[10000]
Ÿ>šS˜R™Bšs4¦[¨Ižb8«.[­~›E[­~¡¢˜[¹YœV¡¢§¢›d™B³œ.›Rš~°V¡¯šVº¡¢šH®™B¡¢˜R›Rž9«C±Œ¨Iš)¹Y4¦©¨Iš~ž4³’›9¦4žu¨†šV°‚®I¨†¦[¡¢™B²~ž™#[­~›9¦œŒ¨†œy›'¦[ž
™Bš»™B²)¦…°V›9žb¹°~™s›Rž…š~™#…ž4²)œ~œy™#¦4¦©¨Iš~°~™Bª ¨I˜R˜R›RžbžRʝ[­~›‚[¡¢ª›„[™ VšV°¾¨I𾡝[›9ª ¡¢žc¦4™B²VºB­~§¯»
œ~¦[™#œy™#¦44¡¢™BšV¨I§C[™W¡¯[ž=°~›9œ~[­h¬¡[­~¡¢šc4­V›œV¡¢§¢› £
Ÿ>š³_¨I˜98«#¦©¨†šV°~™Bª¨I˜R˜R›Ržbž`¡¢š¨Išr¨†¦4¦©¨R»d°V¡¦[›R˜9[§»u¦[›9°V²~˜R›9ž[™
¦©¨Iš~°~™Bª6¨†˜R˜R›Rž4ž`¡¯š4­V›Š˜R™BªkœV²~4›9¦8Ç¥ž
ª¨I¡¢šQª›Rª™#¦4»«=ž4¡¯šV˜9›j¨Iš¨†¦4¦©¨R»•¨I§¯¬¨R»žc™ƒ˜9˜R²)œŒ¡¯›Ržh¨Ž˜R™BšH[¡¢ºB²~™B²~ž…žb›9h™B³dª›Rª™#¦4»J˜9›R§¢§¢žR«
ž4›R›
´p¡¢ºB²)¦[›uÈ £
a
{
a[0]
s
Figure 6:
a[1]
a[2]
a[n-1]
}‰+•&787'&:Æ3I\9\RAH]2*b%8M&Ž\93B+21>*i-BAp3BACM]C&7!1u3[Zr1@?.%gDS&*,+<DF%RD‡3B78:~mdËa%978:Æ%ROi%RDF%R+21
*,+ 1>AC78+ 3#\'\RAs]2*l%8M
D‡%9D‡3B78:Æ\9%8O0OM9f
;?.%97R%
*>Mk1@?.%gD‡%RDF3B78:‡7R%‘z8AC*07R%'(‡143‚MR143B7R%
&YM9*0+.-Oi%Waƒ&HOPAp%c3[Zs1@?.%gAC+(~%97!OX:H*,+.-„1>:N]y% m s
¿ ™r¨I˜R˜R›9ž4že[­~›‰›9§¢›Rª›RšH—™B³^¡¢š~°V›‘µ ¡¯š4­V›¨N¦4¦©¨R» «)¨Ež4¡¢ªkœV§¢›˜R™BªkœV²)©¨†[¡¢™Bšr¬¡¯4­…¨†°V°)¦[›9ž4ž4›Rž
[­~›9¦[›9³’™#¦[›ž4² k˜9›Rž £ Ÿ>³ ¡¢ž€4­V›¨I°~°~¦4›Rž4iž¼,œ.™Bž4¡¯[¡¢™BšŒ½p¬a­~›9¦4›[­~›~¦[žbŠ›R§¢›Rª›9šs€™B³ bžb©¨†¦44ž «ƒ¨†šV°
a
¡¢ž[­~›Ešs²Vª±y›9¦™B³ªp›9ª™#¦4»c˜R›R§¢§¢ž[­V¨†¨kž4¡¢š~ºB§¢›‰®#¨†§¢²~›·™B³4­V›·²~š~°~›9¦[§¯»ƒ¡¢š~ºg»ƒœy
› ™s˜R˜R ²)œV¡¢›RžR«
s
[­~›Rš·[­~›e›R§¢›9ª›Ršsp™B³V¡¯šV°~›'µ žb©¨†¦44ž¨†[­~›—ª›Rª™#¦b»u˜9›R§¢§ƒ¬
­V™Bžb›=¨I°~°~¦4›Rž4ž`¡¢ž
«Bž4›R›=´{¡¢ºB²)¦[
› £
i
p+si
2.6.4 Arrays are not self-describing
à ¦4¦[¨8»»ƒœ.›Rž
¨N¦[›d›'µ˜R›9œ~[¡¢™BšV¨I§y¡¯š‚Á‰ £—¿ ­V›‰³’™B§¢§¢™!¬¡¯šVº·˜9™ƒ°~›d³¢¦©¨†ºBª›Ršs¡¢§¢§¯²Vžl4¦©¨†[›9žŠ[­~¡¢žRÊ
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
a
p+s
p
a[0]
!
p + 2s
a[1]
p + (n − 1)s
a[2]
a[n-1]
0
Figure 7:
1
n−1
2
xŠ?.%c&7879&:Ž%8O_%RD‡%9+21E3[Zr*0+(~%‘
i
MR1b&7!1@M&H11@?.%…&)()(7R%RMRM
p + si
m
I¨ š~™#[­~›9¦‰¨N¦4¦©¨R» £ ­H»‚¡¢ž[­~¡¢ž©Î à ¦4¦[¨8»ƒž¨†¦[›r¨k°~›8¨I°
­V¨Iš~°„³¢¦[™BªÀ[­~›‰œ~¦[™Bº#¦©¨†ªª¡¢š~ºE§’¨Iš~ºB²V¨IºB›uÁ«Œ¨Iš~°h[­~›u°V›9ž4¡¢ºBš„™B³`¨N¦4¦©¨R»ž¡¢š‚Á¡¢ž‰¼>³¢¦[™BªÀ[™ƒ°V¨R».Ç ž
œy™B¡¢šH™B³`®¡¢›'¬½¸s²V¡[›dœ~¦[¡¢ª¡¯4¡¯®› £¿ ­~›·ª¨I¡¢š„¬=›R¨†¹š~›Rž4ž¡¯ž[­V¨†·1@?.%+yACDSTR%R7S3[Zh%8O_%RDF%R+21@MS3[Z
&+¶&7879&:J*,M„+`3179%b]27R%8MI%9+214%'(5*0+1@?.%j&7879&:Ì M„as&HOXA{% £ Á¶¬¨Iž·°~›Rž4¡¢ºBš~›R°/[™‚˜R™Bªkœy›'[›g¬¡[­
ª¨I˜©­~¡¢š~›§’¨Iš~ºB²V¨IºB›¡¢šh› k˜R¡¢›9šV˜'»«Œ¨†šV°…[­~¡¢ž=°V¡¯°Vš2Ç =§¢›8¨R®›‰¦4™ƒ™BªÀ³’™#¦
§¢²µ²~¦b» £ à š„¨†¦4¦[¨8»®I¨†¦[¡’¨N±Œ§¯›
¡¢žª›9¦[›R§»·¦[›9œ~¦[›Rž4›9šs[›R°±s»g¡¯4žŠ¨I°~°)¦[›RžbžR«ƒ°~› Vš~›R°¨Iž[­~›
¨†°V°)¦[›9ž4žŠ™B³C4­V›ª›Rª™#¦4»·˜9›R§¢§)¬­~›9¦[›[­~›
~¦[žb›R§¢›9ª›Ršs=¼,4­V›e™Bš~›™B³Œ¡¯šV°~›'µ ½pžb©¨†¦44ž £ ›¨I§¢ž4™ž[¨R»·[­V¨†€¨IšW¨†¦4¦[¨8»r¡¢ž`š~™#MI%8O ZRU©(~%8MI\R78*–T8*,+.-.Ê
¡¯°~™ƒ›Ržš~™# l¹ƒš~™N¬ ¡¯[ž=™!¬š„§¯›Rš~0º#[­ £
™!¬w¬=›…ºB›9[™‚ [­~›…¨Iž4ž4¡¢ºBš~ª›RšH·¡¢ž4žb²V›Iʝ4­V›'¦[›…¡¯žrš~™‚¬¨R»™B³¨I²)[™Bª¨†4¡¢˜8¨I§¢§»F˜9™#œƒ»¡¯šVºF¨I§¢§
›R§¢›9ª›Ršs[ž™B³`[­~›¨†¦4¦©¨R»
¡¢šH[™ «C¬¡[­~™B²~¹š~™!¬¡¢š~º­~™!¬6ª¨IšH»h›R§¯›Rª›Ršs4ž[­~›Rž4›¨N¦[› £ ²)¬=›
a
\'&+<™B³˜R™B²)¦[ž4›‰°~™W[­~¡¢žª¨Išs²Œ¨†§¢b§¯»r®¡’¨¨ž4¡¢ªkœV§¢›§¢™s™#œ{«ƒž4¡¢š~˜R›¬=›‰¹ƒšV™!¬ [­~›d¨N¦4¦©¨R»c§¢›Rš~º#[­~ž=³¢¦[™Bª
[­~›°~›R˜R§’¨†¦[¨†[¡¢™Bš~ž 2›8¨†¦4§¯»‡Á œV¦4™Bº#¦©¨Iªª›9¦[ž¬=›9¦[›rš~™#‰»›'džbœ.™B¡¢§¢›R°S›Rš~™B²~ºB­F[™c˜R™BªkœV§’¨I¡¢š‚¨N±y™B²)
ž4²~˜©­Yª¡¢š~™#¦=¡¢š~˜R™Bšs®›9šV¡¯›Rš~˜R›Rž £ ¼ šh[­~›u™#4­V›'¦
­V¨Iš~°2«[­~¡¢ž§¢›8¨R®›Rž¨IªkœV§¢›¦[™ƒ™Bª ³’™#¦±Œ²~ºBž £ ½
­V›9šhÁ‰ÂL¬¨Iž°~›9®›R§¢™#œ.›R°ªW²~˜©­k§’¨N[›9¦8«H™Bš~›
°~›Rž4¡¢ºBšgºB™¨I§V¬¨†ž[™d­Œ¨R®›Á ¨†ž—¨užb²~±Vž4›' £ à ž
¨˜R™Bš~ž4›R¸ƒ²~›Rš~˜R›I«C¨†¦b¦©¨R»ž¨†¦[›džl[¡¢§¢§2¨†¦4™B²Vš~°…¡¢šYÁÂu £
›r¨I§¯ž4™˜8¨Iš~š~™#¡¢š~¡¯[¡’¨†§¢¡
R›u¨IšF¨†¦4¦©¨R»‚³¢¦[™Bª
2.6.5 Iteration over a container
É2›98Ç¥ž—[¨†¹›¨džb[›'œh±Œ¨I˜[¹.«³’™#¦4ºB›9¨†±y™B²)—[­~›[›9˜‘­~š~¡¢˜8¨†§¢¡¯[¡¢›9ž€™B³^¨†¦4¦[¨8»ƒž=³’™#¦¨dª™Bª›RšsR«ƒ¨Iš~°ºB™³’™#¦
¨·±Œ¡¯ºBºB›9¦=œŒ¡¯˜9[²)¦[› £
›Y­V¨R®›S¨I§¯¦[›8¨†°~»<¡¢š~°~¡¢˜8¨†[›9°5¡¢š5[­~›„¡¢šsb¦[™ƒ°~²~˜9[¡¢™BšJ4™j[­~¡¢žkž4›R˜'[¡¢™Bš [­V¨†g[­~›„œ~¦[™s˜R›Rž4ž™B³
¡¯[›'¦©¨†[¡¢š~º™!®›9¦E¨ž4›R¸s²~›Rš~˜R›k™B³Š°V¨†[¨¡¯žu²)±V¡¢¸ƒ²~¡¯4™B²Vž £·¿ »ƒœV¡¢˜R¨I§¢§¯»«.[­~›r°V¨†©¨¨†¦[›ržb[™#¦[›9°j¡¢š‡žb™Bª›
\93B+21b&*0+`%R7!«V¨Iš~°c¬=›š~›R›9°…[™Eœy›'¦[³’™#¦[ªÀ¨E˜R›9¦4[¨I¡¢š™#œy›9¦©¨N[¡¢™Bš³’™#¦¨I§¢§Œ›R§¢›Rª›RšH[že¡¢š[­~›˜R™BšH©¨I¡¢š~›9¦ £
Ÿ>š„ºB›Rš~›9¦[¨I§>«~¨·˜R™Bšs[¨I¡¢š~›9¦¡¢ž¨Iš„™#±VÄl›9˜9=[­V¨†˜8¨Iš„žb4™#¦[›u™#4­V›'¦
™#±VĖ›R˜9[ž‰¼>¡¯[ž=›R§¯›Rª›Ršs4ž©½'«)¨Iš~°h4­Œ¨N
™ ›'¦[ž
ž4™Bª›¬¨R»ž™B³¨I˜R˜R›Ržbž4¡¢š~ºg[­~›Rž4›u›R§¢›Rª›9šs[ž £Š¿ ­~›u™BšV§» b­V¨†¦4° ¦[›R¸s²V¡¦[›Rª›RšH
­~›9¦[›u¡¢ž4­Œ¨N
¨k˜R™BšH©¨I¡¢š~›9¦ªr²~žb™ ›9¦[­~›dœy™Bž4žb¡¯±V¡¢§¢¡¯»c™B³€¡[›9¦©¨†4¡¢š~ºg™!®›9¦u¨I§¢§p¡[ž›R §¢›9ª›Ršs[ž £ Ÿ>šS4­V¡¯ž¡¢š~³’™#¦[ª¨I§
ž4›Rš~ž4›I«C¨Iš„¨†¦4¦©¨R»…¡¢ž¡¯šV°~›R›9°Y¨r˜9™Bšs©¨I¡¯šV›'¦8«)ž4¡¢š~˜R›‰[­~›‰¦©¨†šV°~™BªÀ¨I˜R˜9›Rž4ž³’²~š~˜9[¡¢™BšV¨I§¯¡¯»˜8¨Išh±.›d²~ž4›R°
[™W¡¯[›9¦©¨N[›™N®›9¦[­~›u›9§¢›Rª›RšH[ž £
€
`©
!
É ›9RÇ¥žºB›9
±C¨†˜©¹…[™¨†¦4¦[¨8»ƒž £ Ÿ,4›9¦©¨†[¡¯šVºW™N®›'¦‰¨IšS¨†¦4¦©¨R»…™B³§¯›Rš~º#[­
^
˜8¨Išc±y›‰°V™Bš~›±ƒ»¦©¨†šV°~™BªÀ¨I˜R˜9›Rž4ž§¢¡¯¹›¡¢šc§¢¡¢š~›Rž !C8" ™B³ `¦[™Bº#¦©¨Iª 8"£ ›‰­V¨8®›‰ž4›R›9šh[­V¨†=[­~n›
¦©¨Iš~°~™BªÍ¨I˜R˜R›Ržbž³’²Vš~˜94¡¢™BšV¨I§¢¡¯»™B³¨†¦4¦[¨8»ƒž¡¢ž¡¢šs[›'¦[šV¨I§¢§¯»±Œ¨Iž4›9°S™Bš‚¨†°V°)¦[›9ž4ž¨†¦[¡[­~ª›9[¡¢˜ £ ²~¦4¡¢š~º
[­~›·¡¯[›'¦©¨†[¡¢™Bš2«)[­~›·³’™B§¢§¢™!¬¡¯šVºWž4›R¸s²V›9šV˜9›r™B³¨I°~°)¦[›Ržbž4›Rž¡¢ž˜R™BªkœV²)[›R°2Ê
p, p + s, p + 2s, . . . , p +
«¬­~›9¦[›
¨†šV°
­V¨R®›u[­~›‰²Vžb²Œ¨†§^ª›R¨Iš~¡¢š~ºBž £
(n − 1)s
p
s
¿ ­~¡¢žE¦4›R¸ƒ²~¡¯¦[›9ž·™BšV›ªr²~§¯[¡¯œV§¢¡¯˜8¨†[¡¢™BšS¨Iš~°/™Bš~›¨I°~°~¡¯[¡¢™BšŽ³’™#¦r¨IšH»/¨I°~°)¦[›Rž4ž·›‘µ)˜R›9œ~[­~› ~¦[žb £
²)·¡¢³e»™B²/[­~¡¢š)¹Ž¨†±y™B²)d¡¯8«[­~›kªr²~§¯[¡¯œV§¢¡¢˜R¨†[¡¢™Bš‚™Bš~§¯»j˜9™Bª›RžE¡¢šŽ±y›R˜R¨I²~ž4›k¬=›˜R™BªkœV²)[›k›8¨I˜©­
¨I°~°)¦[›Rž4žr³¢¦[™Bª ž4˜9¦[¨†[˜©­2«Š¡¢š~°~›9œy›Rš~°~›RšH[§¯»Ž³¢¦[™Bª [­~›œ~¦[›9®¡¯™B²Vž™Bš~›Rž £ Ÿ>š³_¨I˜98«[­~›cž[¨Iª›ž4›9W™B³
¨I°~°)¦[›Rž4žb›Rže˜R™B²~§¢°ª™#¦[›› k˜9¡¢›Ršs4§¯»k¨†šV°ª™#¦4›
šV¨†[²)¦©¨I§¯§¯»·±y›˜R™BªkœV²)[›R°W±ƒ»kžl©¨†¦4[¡¯šVº‰¬¡¯4­
¨Iš~°
p
¦[›9œ.›8¨†[›R°~§¯»c¨†°V°~¡¢š~º
¼ bºB™B¡¢š~º·[™r[­~›uš~›'µƒ
›R§¯›Rª›Ršs ½ £
s
ž4¡¢š~ºd¦[¨Iš~°V™Bª ¨I˜R˜R›9ž4žR«¬=›˜8¨†šSM'*,DhACO_&H14%d¨†¦4¦[¨8»g¡¯[›9¦[¨†[¡¢™Bš2«B±V²~Š¬=›¨†¦[›ª¡¯ž4ž4¡¢š~º[­~›™#œy›9¦©¨!Å
[¡¢™Bš™B³ bºB™B¡¯šVºu[™E[­~›š~›'µ—›R§¢›Rª›RšH H™BšV§»W[­~¡¢žŠ™#œy›9¦©¨†4¡¢™Bškª¨†¹›Rž€¡¯[›9¦[¨†[¡¢™Bšk™!®›9¦¨d˜9™Bšs©¨I¡¯šV›'¦
šV¨†[²)¦©¨I§V¨Iš~°k› k˜R¡¢›9šs £¿ ­V›³’™B§¢§¢™!¬¡¯šV º‰¨IšV¨I§¯™Bº#»¡¢§¢§¢²~žb4¦[¨†[›Rž[­~›œy™B¡¢šsRÊ{»™B²j\'&+j™B³.˜R™B²)¦[ž4›¦[›8¨I°
¨r±.™ƒ™#¹±ƒ»…žb©¨†¦b[¡¢š~ºr¬
¡¯[­cœC¨†ºB› «)[­~›RšY˜R§¯™Bž4¡¢š~ºW[­~›±y™ƒ™#¹C«~™#œy›Rš~¡¢š~ºg¡¯
¨Iº¨I¡¯šh™BšhœŒ¨IºB›Rž
«
1
2−3
˜R§¢™Bžb¡¢š~ºY¡¯8«™#œy›Rš~¡¢š~ºY¡¯™Bš/œŒ¨IºB›Rž
«›9[˜ £ ²)²Vš~§¢›9ž4ž·»™B²^Ç ¦[›ž4™Bª›9¬
­V¨†·›R˜R˜9›Ršs4¦4¡¢˜#«»™B²
4−5
œ~¦[™#±Œ¨†±V§¯»œ~¦[›R³’›9¦[™u˲~žb[²)¦[šh[­~›œŒ¨IºB›Rž¡¢š…±y›'–¬=›9›Rš £
Iteration by random access.
à ¦b¦©¨R»ž2™ ›9¦{šV¨†[²)¦©¨I§#¨Iš~°d› g˜R¡¢›RšH{¡[›9¦©¨†4¡¢™Bš[­)¦[™B²~ºB­]y3B*0+214%R7!M £ {™B¡¢šs[›'¦
®I¨I§¢²~›Rž
˜R¨Iš„±y›d[­~™B²~ºB­s™B³¨Iž
¨I˜9[²V¨I§{¨I°~°)¦[›Rž4ž4›9žR«.¨Iš~°„[­~›9»h¨I§¢§¯™N¬ ™#œy›'¦©¨†[¡¢™Bš~ž§¢¡¯¹› 4¨I°~°~¡¢š~º
¡¢šc™#¦[°~›9¦[™WºB™[™[­~›šV›‘µ›R§¢›Rª›9šs=¡¢šc[­~›u¨N¦4¦©¨R» £ (
›9¦[›‰¡¢ž=­~™N¬¾¬=›‰˜R™B²~§¢°c›R¸ƒ²~¡¯®I¨I§¢›9šs[§¯»g¬
¦[¡¯s4 ›
[­~›‰¡¯[›9¦©¨N[¡¢™Bšc¡¢šh§¢¡¯šV›9ž !C8" ™B³ `¦[™Bº#¦©¨Iª 8" ¬¡¯[­cœy™B¡¢šH[›9¦[ž £
Iteration by pointers.
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
à °~ª¡¯4[›9°V§»«!4­V¡¯žp§¢™s™#¹žpª™#¦4›€˜R™BªkœV§¢¡¯˜8¨†[›R°d¨† ~¦[žl`ž4¡¢ºB­Hp[­V¨IšE[­~›Š¦[¨Iš~°V™Bª ¨I˜R˜9›Rž4ž®›9¦[žb¡¢™Bš2«
±V²)e¬=›#Ç¥§¢§Œ›'µœV§’¨†¡¢šk¬­V¨†8Ç ž—ºB™B¡¢š~ºE™Bšc¡¢š°~›9©¨I¡¢§Œ¡¢š[­~›š~›'µ=ž4›9˜9[¡¢™Bš~ž £ Ÿ>š[›9¦[ªž—™B³^´p¡¯ºB²~¦4› ƒ«ƒ¬=›
­V¨R®›u¦[›9œV§’¨†˜R›R°h¡[›9¦©¨†4¡¢™Bšc±s»h¡¯šV°~›'µ¬
¡¯[­…¡¯[›9¦©¨N[¡¢™Bš±ƒ»…¨I°~°)¦[›Rž4ž £
2.6.6 Pointer types and functionality
´)™#¦¨†šs»»ƒœy› [­~›‰˜R™#¦4¦[›9žbœy™Bš~°~¡¢š~º]y3B*0+214%R71>:!]y%W¡¢ž
›·˜R¨I§¢§ ½£
[­~›·²Vš~°~›9¦[§»¡¢š~ºg»ƒœ.›E™B³ 8£ à šS›‘µœ~¦[›Rž4žb¡¢™BšF™B³»sœy› ¡¢ž˜8¨I§¯§¢›R°‚¨r]y3B*0+214%R7j¼0[™
¿ ­~›r®#¨I§¯²V›r™B³e¨œy™B¡¢šH[›9¦[™ ¡¢ž[­~›g¨I°~°)¦[›Ržbžd™B³e¨Iš‡™#±ŒÄ–›R˜9u™B³€»sœy› Š£ ›g˜R¨I§¢§[­~¡¢ž[­~›
™#±VÄl›9˜9].3B*,+214%'(Y143k±ƒ»c[­~›‰œ.™B¡¢šs[›'¦ £
›r˜8¨Iš‡®ƒ¡¢ž4²V¨I§¢¡ R›¨kœy™B¡¢šs4›9¦ #•¨†žu¨†šj¨†¦4¦4™N¬¶œy™B¡¯šs[¡¢š~ºk[™…¨˜R›R§¢§`¡¢šS[­~›W˜9™BªkœŒ²)[›'¦8Ç¥žª¨I¡¯š
ª›Rª™#¦4» Q[­~›˜R›R§¯§2¬
­~›9¦[›u4­V›‰™#±VÄl›9˜9=œy™B¡¢šs4›R°…[™r±ƒ
» #ƞl©¨†¦4[ž9«)ž4›R›E´{¡¢ºB²)¦[› £
!
#
Figure 8:
} ]y3B*0+214%R7Y143 7R%b]27R%8M†%R+21@M„1@?.%‚&)()(7R%8MRMY3[ZY&+ 3T,o#%9\R1g3[Z1>:N].% ]2A.14%R7.Ì MrDS&*,+<DF%RD‡3B78:~m
*0+¾1@?.%S\93BD„U
¨†šV°
>Ÿ š~¡¯[¡’¨I§¯¡
8¨†[¡¯™Bš^«y[­~›c¨Iž4žb¡¢ºBš~ª›Ršsd™#œy›9¦©¨†4™#¦ «€¨†šV°/[­~›˜R™BªkœŒ¨†¦[¡¢žb™BšŽ™#œy›9¦©¨†4™#¦[ž
=
==
¨†¦[›°~›Vš~›R°<³’™#¦W¨IšH»Žœy™B¡¢šH[›9¦E»ƒœ.› 8£j¿ ­~›§’¨†4[›'¦ž4¡¢ªkœV§¯»S[›Ržb¬­~›94­V›'¦·[­~›…¨†°V°)¦[›9ž4ž4›Ržr!=
¡¢š
¸ƒ²~›Ržl[¡¢™BšY¨†¦4›‰[­~›‰ž[¨Iª›™#¦šV™# £
Ÿ>š~¡¯[¡’¨I§¯
¡ 8¨†[¡¯™Bš…¨†šV°S¨Ižbž4¡¢ºBš~ª›Ršs˜R™#œs»„[­~›d®I¨I§¢²~›k¼@¨Iž
²Vžb²Œ¨†§_½'«~¬­~¡¢˜©­Y¡¢š„[­~¡¢ž˜R¨Iž4›·ª›8¨Iš~ž=[™
˜R™#œs»j¨Išj¨I°~°~¦4›Rž4ž [­s²~žR«p¡¢³ œy™B¡¢šH[ž[™hž4™Bª›™#±VĖ›R˜98«^[­~›g¨Ižbž4¡¢ºBš~ª›Ršs
­V¨Iž‰[­~›W› ›R˜9
[­V¨†
šV™!¬ ¨I§¢žb™cœy™B¡¯šs[ž[™j[­~¡¢ž™#±VÄl›9˜9 £·¿ ­~›r™#±VĖ›R˜9‰¡¯[žb›R§¢³¡¢žšV™#‰˜R™#œV¡¢i›9° =£ j ›¦[›Rª¨†¦4¹h[­V¨†
œy™B¡¢šH[i›9¦u¡¢š~¡¯[¡’¨†§¢
¡ 8¨†4¡¢™Bš‚¨Iš~°Ž¨Iž4žb¡¢ºBš~ª›Ršs¦[›R¸s²~¡¯¦[›W4­V›W–»sœy›Ržu™B³—±y™#[­j™#œy›'¦©¨Iš~°~žu[™c±y›g›'µ)¨I˜9[§»
[­~›dž4¨Iª› •¡¢ªkœV§¢¡¢˜9¡¯Š˜9™Bšs®›9¦[žb¡¢™Bš~ž
°~™Bš2Ç ¬=™#¦4¹ £ Ÿ>³»™B²„4­V¡¯š~¹…¨†±.™B²~¡¯R«~4­V¡¯ž¡¢ž˜R§¢›8¨N¦ £ Ÿ>ª¨IºB¡¢š~›
[­V¨†=[­~›®#¨†¦4¡’¨†±V§¢› ¡¢ž™B³{»ƒœ.›
«Œ¨†šV°…[­V¨†=»™B²Y˜R™B²~§¢°…¬¦[¡¯[›
i
int*
double * j = i
ƒ¡¢š~˜R›
™#±VÄl›9˜9[ž²Vžb²Œ¨†§¢§¯»¦[›R¸s²~¡¯¦[›dª™#¦4›‰ª›9ª™#¦4»˜R›R§¯§¢ž4­Œ¨†š
™#±ŒÄ–›R˜'[žR« ¬=™B²~§¢°„š~™!¬
±y›
¨œydouble
™B¡¯šs[›9¦[™·¨
™#±VĖ›R˜9[­V¨†Š¡¯šV˜9§¢²~°V›9ž€ª›Rª™#¦b»·˜R›R§¢§¯žŠ™#¦[¡¢ºBint
¡¯šŒ¨†§¢§¯»Eš~™#±y›Rj§¢™Bš~ºB¡¢š~º[™ £
double
i
¿ ­V¡¯ž˜8¨Iš‚­V¨†¦[°~§¯»c±y›E˜8¨†§¢§¢›R°‚¨ b˜9™Bšs®›9¦[žb¡¢™Bš £ Ÿ>šS³_¨I˜98«Œž4¡¢š~˜R›E¬=›E™Bš~§¯»…˜R™#œƒ»Y¨IšS¨I°~°~¦4›Rž4žR«C4­V›'¦[›
˜8¨Iš~š~™#=±y›‰¨Išs»œV­H»ž4¡¢˜R¨I§2˜R™Bšs®›9¦4ž4¡¢™Bšh™B³^[­~›
žb[™#¦[›R°…®#¨I§¯²V›I«)›9®›Rš„¡¢³2[­~›ª›Rª™#¦4»W¦[›R¸ƒ²~¡¯¦4›Rª›Ršs4ž
™B³{4­V›‰¬=™r»ƒœ.›Rž
­V¨†œ~œy›Ršc[™W±.›‰[­~›už[¨Iª› £
›˜8¨Išg™#±~©¨†¡¢šg¨œy™B¡¢šH[›9¦`[™u¨IšH»WºB¡®›Ršg™#±VĖ›R˜9±ƒ»W¨†œ~œV§¯»¡¯šVº[­~›=²~šV¨†¦4»
& ()(7R%8M9Mc3R]y%979&H143B7[™k¨†šs»c§¯®I¨I§¢²~›[­V¨†=¦[›R³’›9¦[ž[™W[­~›‰™#±ŒÄ–›R˜' £ Ÿ>³p[­~›u§®#¨I§¯²V›¡¢ž=™B³p»sœy› «)[­~›Rš
)
T
[­~›¦[›Rž4²~§¯¡¢ž¨Iš…¦4®I¨I§¢²~›‰™B³p»ƒœy›
£Š¿ ­~›užb»ƒšs©¨!µh™B³¨Iš„¨I°~°)¦[›Ržbž
™#œy›9¦[¨†[™#¦˜8¨I§¢§2¡¢ž
The address operator.
T*
Ÿ>š„[­~›d³’™B§¯§¢™N¬
¡¢š~ºW˜9™ƒ°~›d³¢¦©¨†ºBª›Ršs¬=›d²~ž4›d[­~›d¨I°~°~¦4›Rž4ž™#œy›'¦©¨†[™#¦[™k¡¢š~¡¯4¡’¨I§¢¡
9›¨r®I¨†¦[¡’¨†±V§¢›
iptr
™B³{»sœy›
¬¡[­…[­~›u¨I°~°)¦[›Rž4ž™B³`¨Iš„™#±VĖ›R˜9™B³p»ƒœ.›
šV¨Iª›R° £
int*
int
i
int i = 5;
int * iptr = & i ; // iptr initialized with the address of i
´ ¦4™Bª ¨/œy™B¡¢šs4›9¦8«¬=›‡˜R¨IšLºB›9h±Œ¨I˜[¹Q[™<[­~›F™#±ŒÄ–›R˜9…œy™B¡¢šH[›R°•4™
)
[­)¦[™B²~ºB­‡(~%R7R%,ZI%R7R%9+`\R*,+.-c™#¦*0+(*,7R%'\81>*b3B+ £€¿ ­V›²~šŒ¨N¦4»F(~%R79%>ZI%R79%R+`\9%3R]y%R7'&H143B7
¨†œ~œV§¢¡¢›9°g[™·¨Iš
¦4®I¨I§¢²~›™B³^œ.™B¡¢šs[›'¦e–»sœy›»¡¢›9§¢°~ž=¨Iš…§®#¨I§¯²V›¦4›R³’›9¦4¦[¡¯šVº[™[­~›™#±ŒÄ–›R˜'œ.™B¡¢šs[›9°c[™ £ *Ÿ>³2[­~›¦4®#¨†§¢²~›¡¢ž
™B³{»sœy› «[­~›Ršh[­~›‰¦[›Rž4²~§¯¡¢ž™B³{»ƒœ.› Š£Œ¿ ­~›užl»šs[¨Nµ…™B³`¨r°~›9¦4›R³’›9¦[›Rš~˜R›d™#œy›9¦©¨†4™#¦˜R¨I§¢§2¡¢ž
The dereference operator.
€
`©
8"
% ´)™B§¢§¢™!¬¡¢š~º·²)œY™Bš„™B²)¦œ~¦[›9®¡¯™B²Vž˜R™s°V›‰³¢¦©¨IºBª›9šs8«¬=›‰˜8¨Išh4­V›'¦[›R³’™#¦[›‰¬
¦[¡¯4›
int i = 5;
int * iptr = & i ; // iptr initialized with the address of i
int j = * iptr ; // j == 5
¿ ­~›šV¨Iª¡¢š~ºgžb˜‘­~›Rª›·™B³`œy™B¡¯šs[›9¦
–»sœy›Rž¡¢žª™#4¡¯®#¨N[›R°„±ƒ»h[­~›·°V›'¦[›R³’›9¦[›9šV˜9›W™#œy›'¦©¨†[™#¦ £¿ ­~›
°~›R˜R§’¨N¦©¨†[¡¢™Bš
#
˜8¨Iš„¨I§¢ž4™±y›u¦4›8¨I°j¼@¨†šV°…¡¢šh³_¨†˜9§¢›9º¨I§¢§¯»k±.›‰¬¦[¡¯4[›9š s¬=›u°~™Bš2Ç °~™r[­~¡¢ž9«~4­V™B²~ºB­Œ½e¨Iž
#
¿ ­V›už4›R˜R™Bš~°Y®›9¦[žb¡¢™BšY¡¢š~°~¡¯¦[›R˜94§¯»°~› VšV›9ž[­~›u»sœy›d™B³ ±s»hž4¨8»ƒ¡¢š~ºW[­V¨† #¡¯ž
™B³p»ƒœ.› Š£C¿ ­~¡¢ž
¡¢ž=[­~›už4¨Iª›¹¡¢š~°h™B³p¡¢š~°V¡¦[›R˜9°~›Vš~¡¯[¡¢™Bš[­V¨†¬=›d¨†§¯¦[›8p¨I°)»¹ƒšV™!¬ ³¢¦[™BªÍ¨†¦4¦©¨R»c°~›R˜R§’¨†¦[¨†[¡¢™Bš~ž £
´p¡¢ºB²)¦[› ¡¢§¯§¢²~žb4¦©¨†4›Rž=¨I°~°)¦[›Rž4ž
¨Iš~°h°~›9¦[›R³’›'¦[›Rš~˜R›·™#œy›9¦[¨†[™#¦ £
œ.™B¡¢šs[›'¦u¼,ºB¡¯®›RšY¨Iž=¦4®I¨I§¢²~›!½
™#±VĖ›R˜9u¼>ºB¡¯®›RšY¨†ž§¯®I¨I§¢²~›!½
Figure 9:
x€?.%d&)()(7R%8M9Mu3R]y%R7'&H143B7bOi%>Z91g&+(*,1@M*,+yaƒ%R7!MI%Rf1@?.%d(~%97R%>ZI%97R%R+`\9%r3R]y%R7'&H143B7b78*0-?)1
´ ™#¦¨Išs»Fœy™B¡¢šH[›9¦d»sœy›k[­~›9¦[›k¡¯ž·¨…®I¨I§¢²~›k°~¡¢žb[¡¯šVºB²~¡¢žb­Œ¨N±Œ§¯›r³¢¦4™Bª ¨Išs»‡™#[­~›9¦
)
œy™B¡¢šH[›9¦®I¨I§¢²~› £¿ ­V¡¯ž‰®I¨I§¢²~›¡¢ž‰˜8¨I§¢§¢›9°S[­~›+yA.O0O{]y3B*,+214%97„aƒ&HOPAp% £r¿ ­V›r¡¢šH[›RºB›9¦®I¨I§¢²~›
˜8¨†š‡±y›
˜R™BšH®›9¦4[›R°F[™c¨Išs»Yœy™B¡¯šs[›9¦
–»sœy› £d¿ ­~›·®#¨†§¢²~›¨I³¢[›9¦‰˜R™BšH®›9¦[ž4¡¢™BšF¡¢ž[­~›šƒ²~§¢§pœ.™B¡¢šs[›'¦®#0¨I§¯²V› £ Ÿ>š
[­~›E°~›R˜R§¢¨†¦©¨†[¡¯™Bš
«C³’™#¦›'µ)¨IªkœV§¢›#«)[­~›d®I¨†¦[¡’¨N±Œ§¯›
ºB›9[ž¡¢š~¡¯4¡’¨I§¢
¡ 9›R°c¬
¡¯[­h4­V›
int* iptr = 0
iptr
šƒ²~§¢§Œœy™B¡¢šs4›9¦—®I¨I§¢²~› ¡¢ž—¨g+yA.O,O~]y3B*,+214%97 £Š¿ ­~›‰šs²~§¢§Œœy™B¡¯šs[›9¦Š®#¨I§¯²V›ªr²~žb
£ ›¨I§¯ž4™·ž[¨R»[­V¨†
š~™#±.›u°~›9¦[›9³’›9¦[›Rš~˜R›R°2«Œž4¡¢š~˜R›‰¡¯°V™s›RžšV™#iptr
˜R™#¦4¦4›Ržbœy™Bš~°h[™g¨Išs»c›'µ¡¢žb[¡¯šVºW¨I°~°)¦[›Rž4ž £
ž4¡¢š~ºd4­V›
šƒ²~§¢§Œœ.™B¡¢šs[›'¦Š®I¨I§¢²~›
¡¢ž€[­~›ž[¨I³’›¬¨R»k™B³y¡¯šV°~¡¢˜R¨†[¡¢š~º[­V¨†Š[­~›9¦4›¡¢ž—š~™·™#±VÄl›9˜9¼,»›'‘½
[™kœy™B¡¯šs
4™ £
¿ ­~›¨I§¯[›9¦4šŒ¨N[¡¯®›‰™B³§¯›8¨R®¡¢š~ºW4­V›uœy™B¡¢šs4›9¦²~š~¡¢š~¡¯[¡’¨I§¯
¡ R›R°c¡¢ž±Œ¨I°2Êe[­~›9¦[›d¡¢žš~™k¬¨R»
™B³`[›Ržb4¡¢š~ºg¬­~›9[­~›9¦¨Wœy™B¡¢šH[›9¦
4­Œ¨N¡¢žš~™#¨gšs²~§¢§{œy™B¡¯šs[›9¦
­~™B§¢°~ž[­~›¨I°~°)¦[›Rž4ž
™B³€¨W§¢›RºB¡¯[¡¯ª¨†[›
The null pointer.
8")
™#±VÄl›9˜98«™#¦E¬
­~›9[­~›9¦E¡E­~™B§¢°~ždž4™Bª› l¦©¨Iš~°~™Bª
¨I°~°)¦[›Ržbžd¦[›Rž4²~§¯4¡¢š~º„³¢¦[™Bª §¢›R¨8®ƒ¡¢š~º…[­~›gœ.™B¡¢šs[›'¦
²~š~¡¢š~¡¯[¡’¨I§¯
¡ R›R° £
Ÿ>š‡[­~›g§¢¨†4[›9¦‰˜8¨†ž4›#«^°V›'¦[›R³’›9¦[›9šV˜9¡¢š~ºh[­~›rœ.™B¡¢šs[›'¦d²~ž4²V¨I§¢§»Y˜9¦©¨Ižb­V›9žu[­~›Wœ~¦[™Bº#¦[¨Iª £ Á=™Bš~ž4¡¯°V›'¦
[­~¡¢ž=˜R™s°V›IÊ
int * iptr ;
// uninitialized pointer
int j = * iptr ; // trouble !
à ³¢[›'¦—¡¯[ž°~›R˜R§¢¨†¦©¨†[¡¯™Bš^«#4­V›œy™B¡¢šH[›9¦
­Œ¨†žŠ²~š~°V› Œš~›R°W®#¨I§¯²V›I«H¬
­V¡¯˜‘­W¡¢šgœ~¦©¨I˜'[¡¢˜R›ª›8¨Iš~ž`[­V¨†
¯¡ ª¨R»…˜R™#¦4¦[›9žbœy™Bš~°S4™¨IšS¨†¦4±V¡¯4¦©¨N¦4iptr
»„¨†°V°)¦[›9ž4ž¡¢š‚ª›Rª™#¦4» Œ°~›9¦[›9³’›9¦[›Rš~˜R¡¢š~ºc¡¯ª›R¨Iš~ž
[™¨I˜R˜9›Rž4ž
[­~›ª›Rª™#¦4»g˜R™Bšs[›9šs
¨†=[­~¡¢ž¨I°~°~¦4›Rž4ž £ Ÿ>šhºB›Rš~›9¦[¨I§>«[­~¡¢ž=¨I°~°)¦[›Ržbž¬
¡¢§¢§.š~™#=±y›R§¢™Bš~º·[™[­~›‰œŒ¨†¦b
™B³^ª›Rª™#¦4»r[™·¬­~¡¢˜©­c4­V›œ~¦[™Bº#¦[¨Iªw­V¨Iž=¨I˜R˜R›9ž4ž )[­~›™#œy›9¦©¨†4¡¢š~º·žb»žb4›Rªw¬¡¢§¢§~[­~›Rš…°V›9šs»c¨I˜R˜9›Rž4ž
[™W¡¯¨Iš~°h[›9¦[ª¡¯šŒ¨N[›
[­~›œV¦4™Bº#¦©¨Iª ¬¡¯[­…¨MI%l-BDF%R+21b&H1>*b3B+YZN&A.OX1 £
2.6.7 Array-to-pointer conversion
à šH»S¨†¦4¦©¨R»S™B³€»ƒœ.› ˜8¨Iš‡¡¯ªkœŒ§¯¡¢˜R¡¯[§»c±.›r˜9™Bšs®›9¦44›R°j[™–»sœy› 8£¿ ­~›r¦4›Rž4²~§¯[¡¢š~º®I¨I§¢²~›¡¢ž
[n]
[ ­~›u¨I°~°~¦4›Rž4ž
™B³^[­~› ~¦[žl
›R¯§ ›Rª›Ršs™B³^[­~›E¨†¦4¦[¨8» £ ´)™#¦›'µ~¨IªkœV§¢›I«ƒ¬=›u˜R¨Iš„¬
¦[¡[›
int a [5];
int * begin = a ; // begin points to a [0]
¿ ­~›u°V›9˜R§’¨†¦©¨N[¡¢™Bš
int * begin = & a [0]; // address of the first element
¡¢ž·›R¸s²~¡¯®#¨†§¢›Ršs·¨Iž·³_¨†¦W¨IžE[­~›k¦[›Ržb²V§[¡¢š~º„®#¨†§¢²~›™B³
¡¯žE˜R™Bš~˜R›9¦[š~›R°2«±V²~·4­V›'¦[›¡¢ž¨„ž4²)±~[§¢›
begin
°~¡ ›'¦[›Rš~˜R›#ʝ[­~›u§¢¨†4[›9¦°~›R˜R§¢¨†¦©¨†[¡¯™Bš…›9®I¨I§¢²V¨†4›Rž
«)¬­~¡¢§¢›[­~›‰³’™#¦[ª›9¦°~™ƒ›Ržš~™# £
a[0]
¿ ­~›
œ.™B¡¢šs[›'¦bÅ@žb»ƒ§¢›¦4›9œV§’¨I˜R›Rª›9šs€˜R™ƒ°~›³’™#¦€[­~›§¢™ƒ™#œk¡¢šk§¢¡¢š~›Rž !C! ™B³ `¦[™Bº#¦©¨Iª 8" [­V¨†€¬=›
­V¨R®›gœ~¦[›Rž4›RšH[›R°Æ¨†u[­~›g›Rš~°/™B³ ƒ›R˜9[¡¯™Bš ƒ£ È £ ª¨†¹›Ržu²Vžb›g™B³=¨†¦4¦[¨8»HÅ>[™IÅ,œy™B¡¢šH[›9¦u˜R™Bšs®›9¦4ž4¡¢™Bš/¡¢š
[­~› V¦4žb
§¯¡¢š~›#Ê
bool * begin = crossed_out;
// pointer to first element
¿ ­~›g¨†¦4¦©¨R»sÅ,[™IÅ>œ.™B¡¢šs[›'¦u˜9™Bšs®›9¦[žb¡¢™BšŽ¡¢žœŒ²)¦[›9§¯»S˜R™Bš~˜R›9œ~[²V¨I§ {™Bš‡[­~›gª¨I˜©­~¡¢š~›·ž4¡¢°~›#«{š~™#[­~¡¢š~º
­ ¨†œ~œy›Rš~ž £ ´)™#¦u[­~¡¢ž9«^¬=›¦[›R˜8¨†§¢§³¢¦[™Bª ™B²)¦u›8¨†¦[§¯¡¢›9¦‰°~¡¢ž4˜R²~ž4ž4¡¯™Bšj¡¢šŽ ƒ›9˜9[¡¢™Bš ƒ£ È £¥¤ [­V¨†u¡¢šŽÁ6¨Iš~°
V
[­~›9¦[›9³’™#¦[›E¨I§¯ž4™W¡¯š‚Á‰·«Œ¨†šY¨†¦4¦©¨R» b¡¢ž ž4¡¢ªkœV§¯»W[­~›d¨I°~°)¦[›Ržbž
™B³p¡[ž ~¦[žl
›R§¯›Rª›Ršs £
à ¦4¦©¨R»HÅ>[™IÅ,œy™B¡¢šs4›9¦d˜9™Bšs®›9¦[žb¡¢™BšŽ¨I²)[™Bª¨†4¡¢˜8¨I§¢§»…©¨N¹›RžuœV§’¨I˜9›r¬
­V›9š/¨IšŽ¨†¦4¦[¨8»F¨†œ~œy›R¨†¦[žd¡¯šj¨Iš
›'µƒœV¦4›Rž4ž4¡¢™Bš £ Äl¨†¦4šV›h s4¦[™B²~žbb¦[²)œ{«[­~›°~›Rž4¡¢ºBš~›9¦r™B³rÁÂu·«Š¡¢§¯§¢²~žb4¦©¨†4›Ržd[­~¡¢ž·±ƒ»/ž4¨8»ƒ¡¢š~ºS4­Œ¨N
1@?.%Æ+&D‡%Q3[Z<&+Í&7879&:\93B+ya%R7!1@M143 &Æ]y3B*,+214%97J143*,1@
M e7!MR1S%ROi%RDF%R+21F&H1…1@?.%<MROP*0-B?)14%8MR1
]27R3Ba3I\'&H1>*b3B+ £ Ÿ>šhžb4¡¢§¢§C™#4­V›'¦¬=™#¦4°Vž9«ƒ[­~›9¦[›u¨†¦[›š~™r™#œy›9¦©¨†4¡¢™Bš~ž—™Bš„¨†¦b¦©¨R»žRʛ9®›9¦b»ƒ[­~¡¢š~º[­V¨†e¬=›
˜R™Bš~˜R›9œ~[²V¨I§¯§¯»g°~™d¬
¡¯[­¨Išc¨†¦b¦©¨R»k¡¢ž—¡¯šk¦[›8¨I§¢¡–»W°~™Bš~›
¬¡¯4­¨uœy™B¡¢šH[›9¦ H[­~¡¢žŠ¡¯šœŒ¨†¦b[¡¢˜R²~§’¨†¦€¨†œ~œV§¢¡¢›9ž
[™[­~›·¦©¨Iš~°~™Bª ¨†˜R˜R›Rž4žu™#œy›9¦©¨N[¡¢™Bš2«.ž4›R›[­~›œC¨N¦©¨Iº#¦©¨†œV­S˜8¨I§¢§¯›R° {™B¡¢šs[›'¦užb²~±Vž4˜'¦[¡¯œ~[¡¢š~º)«y™#¦[­~›
4¦[²)[­„¨†±y™B²)=¦©¨Iš~°~™BªÍ¨†˜R˜R›Rž4ž ¡¢š…4­V›‰š~›'µ
ž4›R˜94¡¢™Bš £
!"#$%"&'$()*+,((-./("01"2$%341/(5637,1""8 9:;<>=7$"
5;"?@7A()8 8B(7+((-DCE1CFG H;)(?1JIB("A1%@K2+L(()1(M9:"")+8B2")-;8>$N2((-J"?+PO ?GQ""A8D5*<
€
`©
8"
2.6.8 Pointer arithmetic
Ÿ>š„™#¦[°~›9¦[™W²Vš~°~›9¦[žl©¨Iš~°h¬­H»[­~›u˜R™s°~›u³¢¦©¨†ºBª›Ršs
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
¡¢š~°~›R›R°rž4›9[ž¨†§¢§ƒ›R§¯›Rª›Ršs4ž™B³V4­V›=¨N¦4¦©¨R»
[™ !«#¬=›e­V¨R®›e[™²Vš~°~›9¦[žl©¨Iš~°E]y3B*,+214%R7
crossed_out
&78*>1@?DF%81>*b\R«—[­~›„¨†¦4W™B³˜R™BªkœV²)[¡¢š~ºY¬¡¯4­J¨I°~°)¦[›Rž4žb›Rž £ ›…°V›9§¢¡¯±y›9¦[¨†[›R§¯»/˜R¨I§¢§e[­~¡¢žk¨†š 4¨†¦4 «
ž4¡¢š~˜R›œy™B¡¢šH[›9¦u¨†¦[¡[­~ª›9[¡¢˜E˜9™Bª›Rž¬¡¯[­‡¨c§¯™#™B³ŠœV¡¯[³_¨I§¢§¯žR«.±V²~¬
¡¯[­~™B²)‰¨cž[¨†³’›9»‡š~›9 £ š‡[­~ ›
™#[­~›9¦W­V¨Iš~°^«[­~›…¨I²)[­~™#¦[ž³’›R›R§=[­V¨†[­~›9¦[›h¡¯žW¨†§¢ž4™F¨S˜R›'¦4©¨I¡¢šÆ±y›8¨I²)»/¡¢šÆ[­~›…ª¡¢š~¡¢ª¨†§¢¡¢ž4ª ™B³
œy™B¡¢šH[›9¦¨N¦[¡¯[­~ª›9[¡¯˜ £ Ÿ,RÇ¥žE§¢¡¹›k°)¦[¡¯®¡¯šVº„¨Iš™B§¯°~4¡¢ª›9¦8ÊE¡8Ç¥žE§¯™B²V°2«`¡¯RÇ¥žd°~¡ g˜R²~§¯E[™Yžl[›R›9¦8«ž4›8¨N[ž
¨†¦[›u²~šV˜9™Bª³’™#¦4©¨†±V§¢›#«¨Iš~°h[­~›9¦[›#Ç ž
š~™g­~›8¨N[¡¢š~º £ ²)[­~›d­~›R˜[¹h¬
¡¯[­…¡¯ ¿ ­~›d™B§¯°~4¡¢ª›9¦e§¢™s™#¹žž4™
ªr²V˜©­„±y›'4[›9¦4­Œ¨†šF¨Wª™ƒ°~›9¦[š„˜R¨†¦ £ ›9®›9¦4[­~›R§¯›Rž4žR«y¨†³¢[›9¦°)¦[¡¯®ƒ¡¢š~ºW[­~›E™B§¢°)[¡¯ª›9¦³’™#¦‰¨r¬­~¡¢§¯›#«Œ¡
¬¡¯§¢§œ~¦[™#±Œ¨†±V§¯»[²)¦[š™B²)Š[­V¨†±y›8¨I²)»W¡¢žŠš~™#—›9šV™B²~ºB­2«s¨Iš~°k[­V¨†Šž4¨I³’›9»¨Iš~°²~ž[¨†±V¡¢§¯¡¯»r¨†¦[›
ª™#¦4›
¡¢ªkœy™#¦b©¨Išs—³_¨I˜9[™#¦[ž¡¢šh4­V›‰§¢™Bš~º¦[²~š £
¿ ­~›±Œ¡¯šŒ¨N¦4»¨I°~°~¡¯[¡¢™Bš™#œ.›9¦©¨†[™#¦4ž
«
¨N¦[›°V› Œ
š~›R°d³’™#¦{§¯›R³¢^™#œy›9¦©¨Iš~°~ž
Adding integers to pointers.
™B³¨Išs»‡œy™B¡¢šs4›9¦d»ƒœ.› ¨†šV°Ž¦[¡¯ºB­sE™#œ.›9¦©¨Iš~°~ž·™B³¨Išs»‡¡¢šs[›9º#+¦©¨I§€
»sœy› £ ›R˜8¨I§¢§€[­V¨†E¡¢³¨I𯍆¦lÅ
¦©¨R»Æ¡¢žœV¦4™N®ƒ¡¢°~›R°J¨Ižr[­~›…§¯›R³¢r™#œy›9¦©¨Iš~°2«Š¡r¬
¡¢§¢§—¡¯ªkœŒ§¯¡¢˜R¡¯[§»S±.›…˜R™BšH®›9¦4[›9°J[™j¨Yœy™B¡¢šH[›9¦r²~ž4¡¢š~º
¨†¦4¦[¨8»HÅ>[™IÅ,œy™B¡¢šH[›9¦˜R™Bšs®›'¦[ž4¡¢™Bš £
´)™#¦‰4­V›·±y›9­Œ¨R®ƒ¡¢™#¦™B³ [™±y›°~› VšV›9°^«.4­V›'¦[›Wªr²~žb±y›r¨Iš‡¨†¦4¦©¨R»‚™B³ž4™Bª›·§¢›Rš~º#[­
«yž4²~˜©­
+
n
[­V¨†[­~›d§¢›9³¢™#œy›9¦[¨Iš~° # %¡¢ž¨œy™B¡¢šs4›9¦4™g[­~›d›R§¯›Rª›Ršs™B³ž4™Bª›u¡¢š~°~›'µ
«Œ¡¢šh[­~›
k, 0 k n
¨†¦4¦[¨8» £¿ ­~›˜8¨Iž4›
¡¢že¨I§¢§¯™N¬=›R°¨†šV°c˜R™#¦4¦4›Ržbœy™Bš~°~ž—[™E[­~›ž4¡¯4²Œ¨N[¡¢™Bšk¬­~›9¦4› # %d¡¢ž—¨dœy™B¡¢šs4›9¦
™Bš~›gœŒ¨Ižbu[­~›k§’¨Ižbku=
›R§¢›9nª›Ršsd™B³Š[­~›¨†¦4¦[¨8»<¼,¬=›g˜R¨I§¢§[­~¡¢žE¨].&HMR1@Ub1@?.%RU'%R+(S]y3B*,+214%97 š~™#[›g4­Œ¨N
ž4²~˜©­‚¨œ.™B¡¢šs[›'¦ªr²~žbš~™#±.›d°~›9¦[›R³’›'¦[›Rš~˜R›R°Œ½ £
Ÿ>³p[­~›‰ž4›R˜R™Bš~°Y™#œy›9¦[¨Iš~° "!#*%­V¨Ižž4™Bª›®#¨†§¢²~› žb²V˜©­h4­Œ¨N
«)[­~›Rš
#
%Â !$#&%
i
0 k+i n
¢¡ ž¨hœy™B¡¯šs[›9¦d[™„[­~›
Å>4­›R§¯›Rª›Ršsd™B³4­V›ž4¨Iª›¨†¦4¦[¨8» £ Ÿ>š~³’™#¦[ª¨†§¢§¯»«{¬=›ºB›'r¨hœy™B¡¢šs4›9¦
(k + i)
[­V¨†­V¨Iž±y›R›9šFª™!®›R° ›R§¢›9ª›Ršs[ž[™c4­V›·¦[¡¯ºB­s ¼,¬
­~¡¢˜©­‡¨I˜'[²V¨I§¢§¯»…ª›8¨Iš~ž[™[­~›§¢›R³¢¡¢³ ¡¢ž
i
i
š~›Rº¨†[¡®›!½ £
à º¨I¡¢š2«)¡¢³
«V¬=›uºB›9¨·œŒ¨IžbbÅ,[­~›'Å@›9šV°„œ.™B¡¢šs[›'¦ £ ¨I§¢²~›Rž™B³ ž4²~˜©­„[­V¨†
¡¢ž
š~™#
k+i=n
i
k+i
±y›9¬=›R›9š
¨†šV°
§¢›8¨I°…[™g²~š~°~› VšV›9°…±y›R­V¨R®¡¯™#¦ £
0
É^›'
²~ž
¦4›9œy›8¨†n[­~›œy™B¡¢šs=[­V¨†=¬=›u­Œ¨R®›uª¨I°~›±y›R³’™#¦[›u¡¢š„˜R™Bš~š~›R˜9[¡¯™Bš…¬¡[­…¦©¨†šV°~™BªÀ¨I˜R˜9›Rž4ž
¡¢š„ ƒ›R˜9[¡¢™Bš ƒ£ È £ " Ê`±s»h°~›R³_¨I²~§¯R«[­~›9¦[›E¨N¦[›d¨N±Œžb™B§¢²)[›R§¯»š~™g˜©­~›R˜[¹ž[­V¨†=[­~›E¨†±y™!®›¦[›R¸ƒ²~¡¯¦4›Rª›Ršs4ž
¡¢š~°~›R›R°5­~™B§¢°2«e¨Iš~°5¡¯W¡¢žW›Ršs[¡¦[›R§¯»Æ»™B²)¦k¦[›Ržbœ.™BšVžb¡¯±V¡¢§¢¡¯»j[™‡ª¨†¹›hž4²)¦[›…[­V¨†g[­~¡¢žr¡¢žr[­~›„˜8¨Iž4› £
´~¨I¡¢§¢²)¦[›…[™/°V™/ž4™/¬¡¯§¢§¦[›9ž4²~§¯¡¢š5œ~¦[™Bº#¦©¨Iª ˜9¦[¨Iž4­~›RžR«žb4¦©¨Iš~ºB›„±y›9­Œ¨R®ƒ¡¢™#¦™B³[­~›‚œ~¦[™Bº#¦[¨IªY«e™#¦
¼,œ~¦[™#±Œ¨†±V§¯» [­~›F¬=™#¦4žb„ž4˜9›RšV¨†¦[¡¢™H½ž4›R›Rª¡¢š~ºB§¯» š~™#¦[ª¨†§±.›R­V¨8®ƒ¡¢™#¦8«±V²)h¬
¡¯[­•4­V›Fœy™#[›RšH[¡’¨I§™B³
[²)¦[š~¡¢š~ºr¡¢šs[™ržb4¦[¨Iš~ºB›‰±y›9­Œ¨R®ƒ¡¢™#¦¨†¨†šs»[¡¢ª›#«ƒ™#¦
™BšY¨†šs»c™#[­~›9¦ª¨I˜©­V¡¯šV› £
¿ ­~›9¦4›R³’™#¦[›#«V§¢›9²~žž4²~ªª¨†¦4
¡ R›
[­~›¦[›R¸s²V¡¦[›Rª›RšH[ž=™BšV˜9›dª™#¦[›#Ê
8"B"
#
%eªr²~žbyœy™B¡¢šH2[™4­V››R§¯›Rª›Ršs^™B³H¡¢š~°~›'µ
¨Iš~°
"!#&%ªW²~žb­V¨R®›dž4™Bª›®I¨I§¢²~›
i
k
ž4²~˜‘­„4­Œ¨N
¡¢š‰ž4™Bª›¨†¦4¦©¨R»‰™B³H§¢›Rš~º#[­
0 k+i n
¡¢šV¨†¦4»cž4²)±~4¦©¨I˜'[¡¢™Bšc¡¢žžb¡¢ª¡¢§’¨†¦ £ Ÿ>³)"!#&%­Œ¨†ž®I¨I§¢²~›
#
%
−
"!#*%
i
n
«N¬­~›9¦[›
0 k n
«
£
ž4²~˜©­„[­V¨†
0 k−i n
«V[­~›Rš
»¡¯›R§¢°~ž¨œy™B¡¯šs[›9¦=[™r[­~›d¨N¦4¦©¨R»c›R§¢›Rª›RšH™B³p¡¢š~°~›'µ
£
k−i
¨Iš~°
™B³)[­~›Š¬=™™#œy›'¦©¨†[™#¦[ž9«¨Iš~°4­V›Š²VšV¨†¦b»E¡¢š~˜9¦[›9ª›Ršs¨Iš~°
¿ ­~›=¨Ižbž4¡¢ºBš~ª›Ršs{®›9¦[ž4¡¯™BšVž
+=
-=
°~›R˜9¦[›9ª›Ršs‰™#œy›9¦[¨†[™#¦[ž
¨†šV°
˜8¨IšS±y›²~ž4›R°F¬
¡¯[­S§¢›R³¢‰™#œy›9¦[¨Iš~°Vž™B³œy™B¡¢šH[›9¦»ƒœy›W¨Iž¬=›R§¢§,«
¬¡[­S4­V›r²~ž4²V¨I§ª›8¨Iš~¡¢++
š~º £ ƒ¡¯šV-˜9›rœ~¦[›R˜9›R°~›Rš~˜R›RžE¨†šV°‡¨Iž4ž4™s˜R¡’¨†4¡¯®¡¯4¡¢›Rž¨†¦4›r[¡¯›R°F[™[­~›r™#œy›9¦©¨†4™#¦
žb»ƒªr±y™B§¯žR«ƒ[­~›9»…¨†¦[›d¨Iž¡¢š ¿ ¨N±Œ§¯› ™BšhœŒ¨IºB› ¤Hƒ£
™!¬ ¬=›‰˜8¨Išh²Vš~°~›9¦[žl©¨Iš~°h[­~›‰ž4›R˜R™Bš~°Y§¢¡¢š~›™B³p4­V›u¨†±y™!®›‰˜R™ƒ°~›d³¢¦[¨IºBª›RšsRÊ
bool * end = crossed_out + 1000; // pointer after last element
´p¡¯¦[žl8«{[­~›g¨†¦4¦©¨R»
¡¯žu˜R™BšH®›9¦4[›9°/4™„¨cœ.™B¡¢šs[›'¦‰4™„¡¯[ž ~¦[žbu›R§¢›Rª›RšHg¼0[­~›W™Bš~›
B™ ³¡¢š~°~›'µ ½ £ ƒ¡¢š~˜R›‰4­Vcrossed_out
›d¨†¦4¦©¨R»…­V¨Iž
›R§¯›Rª›Ršs4žR«~¨I°~°~¡¢š~ºr[­~›u¡¢šs[›9ºB›9¦
»ƒ¡¢›R§¢°~ž¨œŒ¨IžblÅ
0
1, 000
1, 000
[­~›'Å>›Rš~°hœy™B¡¢šH[›9¦
³’™#¦[­~›u¨†¦4¦©¨R» £€¿ ­~›‰ž4²)±Vž4›R¸ƒ²~›RšH§¢™s™#œ
end
for ( bool * p = begin ; p != end ; ++ p)
* p = false ; // * p is the element pointed to by p
¡¢žk˜9§¢›8¨†¦gšV™!¬ˆ¨†žg¬=›R§¢§>Êhžb©¨†¦44¡¢š~º‡¬¡¯4­ ¨Fœy™B¡¢šH[›9¦
4™j[­~› ~¦[žb›R§¯›Rª›Ršs…¼
½‘«—[­~›
›R§¢›9ª›Ršsœy™B¡¢šs4›R°„[™¡¢žžb›9[™ c¼
½ p£¿ ­~›RšY¬=›·¡¢š~˜9¦[›9ª›Ršs pžb™k=[­Vbegin
¨†¡¯œy™B¡¢šs4ž
*p = false
p
[™·[­~›š~›'µ=›9§¢›Rª›RšH¼
½
£ ›¦[›9œ.›8¨†—[­~¡¢ž=¨†že§¢™Bš~º¨Iž ¡¯že°V¡ ›9¦[›9šs=³¢¦[™Bª [­~›œŒ¨IžblÅ>[­~›'Å>›Rš~°
++p
p
œy™B¡¢šH[›9¦šV¨Iª›R°
£
end
¨Iš~°
[­V¨†
!=
ž4¡¢ªkœV§¯»4›Ržb¬
­V›'[­~›9¦
[­~›‰–¬=™kœ.™B¡¢šs[›'¦[ž¡¯šY¸ƒ²~›Ržb[¡¯™Bš„œy™B¡¢šs[™g4­V›dž[¨Iª›‰™#±ŒÄ–›R˜9 £ ²)¬=›E˜8¨Iš
¨I§¢žb™W˜R™BªkœŒ¨†¦4›¬=™rœy™B¡¢šs4›9¦[ž=²~ž4¡¢š~ºW[­~›‰™#œy›9¦©¨N[™#¦[ž «
« «V¨Iš~°
£ à º¨†¡¢š2«œV¦4›R˜R›R°~›Rš~˜R›Rž
¨Iš~°
>
>=
¨Iž4žb™ƒ˜R¡’¨N[¡¯®¡[¡¢›Rž—™B³¨I§¢§.¦[›R§¢¨†[¡¢™BšV¨I§.™#œ.›9¦©¨†[™#¦4ž
¨†¦4›d¨Iž<¡¢š <=
¿ ¨†±V§¢› ™BšhœŒ¨IºB›uÈ "£
´)™#¦—[­~›
¦[›Ržb²V§—[™d±y›
žbœy›R˜R¡ Œ›9°^«H[­~›9¦[›ªr²~žbŠ±.›¨Išc¨†¦4¦©¨R»g™B³yž4™Bª›
§¢›9šVº#4­ «sž4²~˜©­c[­V¨†€[­~›
n
§¢›R³¢
™#œy›9¦©¨†šV° #
%¡¢ž
¨Wœy™B¡¢šH[›9¦[™g[­~›E›9§¢›Rª›RšH
™B³`ž4™Bª›‰¡¢š~°~›'µ
¡¯šh[­~›·¨†¦4¦[¨8»«
k1 , 0 k 1 n
¨Iš~°[­~›ž4›R˜R™Bš~°…™#œy›9¦©¨Iš~°#
% ¡¯že¨dœy™B¡¢šH[›9¦—[™E4­V››9§¢›Rª›RšHe™B³2ž4™Bª›¡¢š~°~›'µ
¡¢š
k2 , 0 k 2 n
[­~›Šž4¨Iª›Š¨N¦4¦©¨R» £ à º¨I¡¯š^«
¨Iš~°
¨†¦[›e¨†§¢§¢™!¬=›R°E¨Iš~°·˜R™#¦b¦[›Ržbœy™Bš~°E[™[­~›€œŒ¨IžbbÅ,[­~›'Å@›9šV°
k1 = n
k2 = n
˜8¨Ižb› £
¡¯®›9šj[­~¡¢žR«{4­V›r¦[›Rž4²~§¯u™B³—[­~›Wœ.™B¡¢šs[›'¦d˜R™BªkœŒ¨†¦4¡¢ž4™Bš‡¡¯žd°~›9[›9¦4ª¡¢š~›R°F±s»F[­~›W¡¢šs[›9ºB›9¦E˜R™BªgÅ
œŒ¨†¦[¡¢žb™Bš„™B³
¨Iš~°
£ Ÿ>šY™#[­~›9¦
¬=™#¦4°Vžu¼@¨Iš~°Y¸ƒ²~¡¯4›d¡¢šH[²~¡¯[¡¯®›R§»~½'«ƒ4­V›‰œy™B¡¢šH[›9¦[™g[­~›d›9§¢›Rª›RšH
k1
k2
[­V¨†˜R™Bª›Rž ~¦[žb¡¢š…4­V›u¨†¦4¦[¨8»c¡¢ž=[­~›‰ž4ª¨I§¢§¢›'¦=™BšV› £
Ÿ>šŽ™B²)¦d˜R™s°~›g³¢¦©¨IºBª›9šs8«y[­~›r˜R™BªkœŒ¨†¦[¡¢ž4™Bš
[­~›9¦[›9³’™#¦[›W»ƒ¡¢›R§¢°~ž % ¨Ižu§¢™Bš~ºh¨†ž
¡¢ž
p < end
š~™#¨·œŒ¨IžbbÅ,[­~›'Å@›Rš~°Yœy™B¡¢šH[›9¦ ~›R¸s²~¡¯®#¨†§¢›Ršs4§¯»«~¨Iž
§¯™BšVºg¨Iž œ.™B¡¢šs[ž=[™g¨Iš‚¨I˜9[²V¨I§{¨†¦4¦[¨8»…›R§¢›9ª›Rpšs £
p
¿ ­V›‰§¢™s™#œh[­~›9¦[›9³’™#¦[›d°~™ƒ›9ž¬
­Œ¨N¬=›‰¬¨IšsRÊ¡žb›9[ž¨†§¢§2¨†¦4¦©¨R»c›R§¢›9ª›Ršs[že[™ £
Á=™BªkœŒ¨†¦4¡¢š~º¬=™œy™B¡¢šH[›9¦[žp4­Œ¨N`°~™šV™#ª›R›9[­~›e¨N±y™N®›—¦4›R¸ƒ²~¡¯¦[›9ª›Ršs[ž{§¢›8¨I°~žp4™‰²~š~žbœy›9˜R¡ V›R°
¦[›Ržb²V§[ž¡¯š…[­~›‰³’™B²~¦
™#œy›9¦©¨N[™#¦[ž «
« «V¨Iš~°
£
Pointer comparison.
›W­V¨8®›W¨I§¯¦4›8¨I°)»‚°~¡¢ž4˜R²~ž4ž4›9°‡[­~›r¦4›R§’¨†[¡¯™BšŒ¨†§™#œy›9¦©¨N[™#¦[ž
< <= >
>=
==
€
`©
8"#¤
¿ ­V›'¦[›k¡¢žE™Bš~›kª™#¦4›g¨†¦4¡¯[­~ª›9[¡¢˜™#œy›'¦©¨†[¡¢™Bš‡™Bšjœy™B¡¢šs4›9¦[ž £ à ž4žb²Vª›r[­V¨†
#
% „¡¢žu¨œ.™B¡¢šs[›'¦‰4™…[­~›r›R§¢›Rª›RšH‰™B³—ž4™Bª›¡¢š~°~›'µ
¡¢šjž4™Bª›r¨†¦b¦©¨R»‡™B³€§¢›Rš~º#[­
k1 , 0 k 1 n
«y¨Iš~°Y[­~›·ž4›R˜R™Bš~°S™#œy›9¦©¨†šV° #
% ¡¢ž¨Wœy™B¡¯šs[›9¦
[™k[­~›·›R§¢›Rª›9šs™B³ž4™Bª›u¡¢š~°~›'µ
n
0 k2 ¡¢š<[­~›„ž4¨Iª›h¨N¦4¦©¨R»¾¼,œŒ¨IžlbÅ>[­~›'Å>›Rš~°Jœy™B¡¢šH[›9¦[žg¨I§¢§¢™!¬=›R°Œ½ £5¿ ­~›RšJ[­~›h¦[›Ržb²V§k™B³k[2­~,›c
].3B*,+214%R7
n
M9A^T!1>79&~\81>*l3B+
Pointer subtraction.
#
%
−
#
%
¡¢ž
4­V›d¡¢šs[›9ºB›9¦
£¿ ­ƒ²~žR«Cœy™B¡¯šs[›9¦
ž4²)±~4¦©¨I˜94¡¢™Bšh[›R§¯§¢ž
²~ž b­~™N¬ ³_¨†¦¨NœC¨N¦4 [­~›E¬=™¨†¦b¦©¨R»
k1 − k 2
›R§¢›9ª›Ršs[ž¨†¦[› £—¿ ­V›‰±y›R­V¨R®¡¢™#¦™B³pœy™B¡¯šs[›9¦ž4²)±~4¦©¨I˜'[¡¢™Bšh¡¯ž
²~š~°V› Œš~›R°h¡¢³*#
% ¨Iš~ ° #
% ¨†¦[›uš~™#
œy™B¡¢šH[›9¦[že[™W›R§¢›Rª›9šs[ž=¡¢šj¼,™#¦œŒ¨IžlbÅ>[­~›'Å>›Rš~°„œy™B¡¢šH[›9¦[ž=™B³b½e[­~›‰ž[¨Iª›‰¨†¦4¦[¨8» £
p™B¡¢šH[›9¦ž4²)±~4¦©¨†˜9[¡¢™BšŽ¼,¬
­~¡¢˜©­Y›RªkœV§¢™N»ƒž[­~›d±V¡¢šV¨†¦b»hž4²)±~4¦©¨†˜9[¡¢™BšY™#œy›'¦©¨†[™#¦8«Vž4›R› ¿ ¨†±V§¢› ™Bš
œŒ¨IºB› ¤H ³’™#¦¡¯[žežlœy›R˜R¡ V˜Rž[½e°~™s›Ržš~™#=™s˜R˜R²)¦
¡¯šc[­~›˜R™s°V›‰³¢¦©¨IºBª›9šs=³¢¦[™Bªw[­~›±y›RºB¡¢š~š~¡¢š~º·™B³{4­V¡¯ž
ž4›R˜'[¡¢™Bš £ à »sœŒ¡¯˜8¨I§^²Vžb›·¡¢ž
[™°~›9[›'¦[ª¡¢š~›‰4­V›dšƒ²~ªr±.›9¦™B³›R§¢›9ª›Ršs[ž¡¢š‚¨IšS¨†¦4¦[¨8»…[­V¨†¡¢žºB¡¯®›Rš
±ƒ»…¨·œy™B¡¢šH[›9¦=[™g¡[ž ~¦[žl
›R§¯›Rª›Ršs¨†šV°„¨œŒ¨IžblÅ>[­~›'Å>›Rš~°hœy™B¡¢šH[›9¦ £
>Ÿ š¦[›8¨I§¯¡¯»«H[­~›ž4²)±Vž4˜9¦4¡¯œ~e™#œy›9¦©¨N[™#¦
¨Iž—¡¯šs4¦[™s°~²V˜9›R°¡¢šc ƒ›R˜94¡¢™Bš ƒ£ È £¥" °~™ƒ›Rž—š~™#Š™#œy›9¦©¨†4›™Bš¨†¦4¦©¨R»ƒžR«ƒ±V²)—™Bšœy™B¡¢šH[›9¦[ž £ Ÿ>šH®™#¹¡¢š~ºd4­V[]
¡¯ž
™#œy›9¦[¨†[™#¦=™Bš…¨Iš„¨†¦b¦©¨R»˜R™Bš~žb4¦[²~˜94ž
¨Išc›'µƒœV¦4›Rž4ž4¡¢™Bšh¨Iš~°c4­V›'¦[›R³’™#¦[›4¦[¡¢ºBºB›'¦[ž=¨Iš…¨†¦4¦©¨R»sÅ,[™IÅ>œ.™B¡¢šs[›'¦
˜R™BšH®›9¦[ž4¡¢™Bš £
¡¯®›9šY¨œ.™B¡¢šs[›'¦ #
%r¨†šV°h¨Iš„›'µƒœ~¦[›Rž4ž4¡¯™Bš "!$#&%™B³p¡¯šs[›Rº#¦[¨I§y–»sœy›#«)[­~›‰›'µœ~¦[›Ržbž4¡¢™Bš
Pointer subscripting, or the truth about random access.
#
% "!$#&%'
¡¢ž›R¸ƒ²~¡¯®I¨I§¢›9šs‰¼@¨I§¢žb™W¡¢šh¡¯[že¦[›R¸s²V¡¦[›Rª›RšH[ž=™Bš
#
%¨Iš~° "!#&%B½—[™
#
%
 "!$#&%‘½
>Ÿ ³ "!$#&%·­V¨Iž—®I¨I§¢²~› « [­~›§’¨†4[›'¦e›'µœ~¦[›9ž4ž4¡¢™Bšc»¡¢›R§¯°Vž€[­~›u¨N¦4¦©¨R»›R§¢›9ª›Ršs œV§’¨I˜R›Rž—4™r[­~›¦[¡¯ºB­s=™B³
[­~›™BšV›œy™B¡¢šH[›R°[™=i±ƒ»
# % £ Ÿ>š‰œC¨N¦4[¡¢˜R²~§’¨N¦8«!¡¢³ # Š
% ¦[›Rž4²~§¯[ž^³¢¦[™Bª ¨Iš·¨N¦4¦©¨R»siÅ,[™IÅ>œy™B¡¯šs[›9¦2˜9™Bšs®›9¦[žb¡¢™Bš2«
¼
[­~¡¢ž€¨Iº#¦[›R›9ž¬
¡¯[­W4­V›ž4›Rª¨†šs[¡¢˜9ž™B³Œ¦©¨Iš~°~™Bª ¨†˜R˜R›Rž4ž€³’™#¦e¨†¦b¦©¨R»ž€¨IžŠ¡¢šH4¦[™s°V²~˜R›9°g¡¢š ƒ›9˜9[¡¢™Bš ƒ£ È £ "£
¿ ¨†±V§¢› ¤ žb²Vªª¨N¦[
¡ R›Rž—4­V›‰š~›9¬ œy™B¡¢šH[›9¦bÅ>žbœy›R˜R¡ Œ˜±V¡¢šV¨†¦4»™#œ.›9¦©¨†[™#¦4ž £
Description
žb²~±Vž4˜'¦[¡¯œ~
°~›9¦4›R³’›9¦[›Rš~˜R›
¨†°V°)¦[›9ž4ž
Table 4:
Operator
[]
*
&
Arity
Prec. Assoc.
È
È
¢§ ›R³¢
¦[¡¢ºB­s
¦[¡¢ºB­s
7R%'\9%‘(~%R+`\9%8M·&+(&HMRMI3I\R*l&H1>*0a#*>1>*l%8M‰3[Z]y3B*0+214%R73R]y%R79&H143B7!M†mkxŠ?.%M'A{T!MI\978*]^1Š3R]y%979&H143B7
%‘!].%9\81@M78aƒ&HOPAp%RM‰&HM3R]y%R79&+(HMu&+(E7R%81>AC78+2M‰&+‚OXaƒ&HOPAp%†mxŠ?.%‰(~%R7R%>Z†%R7R%R+`\'%3R]y%R79&H143B7
%‘!].%9\81@M&+78as&HOXA{%&+(…7R%81>AŒ78+2M&+OPaƒ&HOXA{%Rf—;?*>O_%r1@?.%c&)()(79%8MRMk3R]y%R7'&H143B7h%‘!].%9\81@M
&+JOPaƒ&HOPAp%&+(„7R%R1>AC78+2Mc&+<78aƒ&HOXA{%Im
8"
ƒ ™S³_¨†¦W¡¯ž4›R›Rªž·[­V¨†·4­V›™Bš~§¯»Ž²~ž4›c™B³=œy™B¡¢šs4›9¦[ž¡¢žE[™
ª¨†¹›„¡[›9¦©¨†4¡¢™BšJ[­)¦[™B²~ºB­Q¨Iš¨N¦4¦©¨R» ¨‡§¢¡4[§¢›…ª™#¦[›„› g˜R¡¢›RšH[­V¨I𠡝[›9¦©¨N[¡¢™BšJ±ƒ»J¡¢š~°V›‘µ £ ²)
²~š~§¢›Rž4ž¬=›¨†¦[›¡¢šg[­~›¦[›8¨I§¢ª ™B³y›'µƒ4¦[›Rª›R§»·[¡¢ª›'Å>˜9¦[¡¯[¡¯˜8¨I§§¢™s™#œVžR«B[­~›
ž[¨R®¡¯šVºBžŠ¨†¦[›ª¨†¦[ºB¡¢šV¨I§ £ ´)™#¦
[­~›
ž4¨†¹›™B³.¦[›8¨†°Œ¨N±Œ¡¯§¢¡¯»«#¬=›
[­~›9¦[›9³’™#¦[›™B³¢[›Ršžl[¡¢§¢§V²~ž4›¡¯[›'¦©¨†[¡¢™Bšr±ƒ»W¡¢š~°~›'µ £ ƒ™E¬
­Œ¨NŠ¡¢ž[­~›
¦[›8¨†§
˲~žb[¡ V˜8¨†4¡¢™Bš…³’™#¦[­~›œy™B¡¢šs4›9¦˜R™Bš~˜R›9œ~‘Î
¿ ­~›9¦4›¨†¦[›g¨I˜9[²V¨I§¢§»Y–¬=™r˲Vžl[¡ V˜8¨†[¡¯™BšVž9«{¨†šV°Ž™Bš~›W™B³Š[­~›Rª ¬
¡¢§¢§±y›W°~¡¢ž4˜R²~ž4ž4›9°j¦[¡¢ºB­sd¨R¬¨R»
¡¢š[­~›š~›'µ—ž4›R˜9[¡¯™Bš^Ê`œy™B¡¯šs[›9¦4že¨†¦[›¡¢š~°~¡¢žbœ.›Rš~ž[¨†±V§¢›³’™#¦=ºB›94[¡¢š~º lœ~¦©¨I˜'[¡¢˜8¨I§ ¨†¦4¦[¨8»ƒž—¬¡¯4­§¢›Rš~º#[­
š~™#¹ƒš~™N¬
š„¨†˜R™BªkœV¡¢§¢›[¡¯ª› £
¿ ­~›Wž4›R˜R™Bš~°Y˲Vžl[¡ V˜8¨†[¡¯™BšF¡¢žuš~™#u»›9·¨†¦[™B²~š~°‡[­~›g˜R™#¦4šV›'¦8«pž4™„¬=›r¬¡¢§¯§`™BšV§»S±~¦[¡¯› ~»S4™B²V˜©­
¡¯­~›9¦[› £ à ¦4¦[¨8»ƒž¨†¦[›‰±ƒ»h³_¨†¦š~™#
4­V›u™Bš~§¯»h˜9™Bšs©¨I¡¯šV›'¦[ž³’™#¦ž4›9[ž™B³`°V¨†[¨ £ ­~›RšY¬=›d¡¢ªkœV§¢›Rª›9šs
°V¨†©¨œV¦4™ƒ˜R›Ržbž4¡¢š~º¨I§¢ºB™#¦4¡¯[­~ªžR«ƒ¬=›Ežb­V™B²~§¢°„4­V›'¦[›R³’™#¦[›Eª¨N¹›dž4²)¦[›d4­Œ¨N
[­~›9»…¬=™#¦4¹‡+`31™Bš~§¯»…³’™#¦
¨†¦4¦[¨8»ƒž £
´)™#¦›'µ~¨IªkœV§¢›I« Vš~°~¡¢š~º¨g˜R™BšH©¨I¡¢š~›9¦
›R§¢›Rª›9šs
¬
¡¯[­‚¨gºB¡®›RšYœV¦4™#œy›9¦4»j¼,ª™N®ƒ¡¢›‰4­V›R¨†[›9¦4­Œ¨N
œV§’¨R»žE»™B²)¦W³_¨8®™#¦4¡¯[›ª™!®¡¢›!½‰ž4­~™B²V§¯°Æ±y›œy™Bžbž4¡¯±V§¢›³’™#¦Y&+y:J˜R™BšH©¨I¡¢š~›9¦4ž4­Œ¨N™ ›9¦[ž·[­~›³’²~š~˜'Å
[¡¢™BšV¨I§¯¡¯»…™B³¡¯4›9¦©¨†[¡¯šVºg™N®›9¦¡[ž›R§¢›Rª›9šs[ž £
¿ ­~›™Bš~§¯»„²~š~¡¢³’™#¦[ª¡–»¬=›·š~›R›R°S¡¢ž¡¯š‚4­V›·¡[›9¦©¨†4¡¢™Bš
œ~¦[™ƒ˜9›Rž4ž
¡[ž4›R§¢³ £
à šs»J°Œ¨N©¨NÅ>œ~¦[™s˜R›Rž4žb¡¢š~ºŽ¨I§¢ºB™#¦[¡[­~ª ™B³[­~›‚ÁÂu žb©¨Iš~°V¨†¦[° §¢¡¯±~¦©¨N¦4»¼0¬=›h¬¡¢§¯§ž4›9›Yž4™Bª›„™B³
[­~›Rª §’¨†[›9¦©½¬=™#¦4¹ƒžg¡¢šJ[­~¡¢žr¬¨R».ÊY¡¯W›'µœ.›R˜9[žk[­~›…²Vš~°~›9¦[§»¡¢š~º‡˜9™Bšs©¨I¡¯šV›'¦g[™j™ ›9¦„*,14%R79&H143B7!M
˜R™Bš~³’™#¦[ª¡¢š~ºc[™‚ž4™Bª›W¬=›R§¯§Å@°~› Vš~›R°Ž¡¯[›'¦©¨†[™#¦·˜9™BšV˜9›9œ~ £Y¿ ­V›žlœy›R˜R¡ V˜Rž·™B³—4­V›˜9™Bšs©¨I¡¯šV›'¦·¡¯[ž4›9§¢³
¨†¦[›‰¡¯¦4¦4›R§¢›9®I¨Išs³’™#¦[­~›d¨I§¯ºB™#¦[¡¯[­~ª £
(
›9¦[›¡¢ž¬
­~›9¦[›Eœy™B¡¢šH[›9¦[ž
˜R™Bª›·¡¢š2ʝ4­V›'»‚¨†¦[›E[­~›¡¯[›'¦©¨†[™#¦[ž
™ ›9¦[›9°S±s»S¨†¦4¦©¨R»ž £u¿ ­~›9¦[›R³’™#¦4›#«
›9®›Rš‚¡¢³^¬=›d°~™Bš2Ç ²~ž4›dœy™B¡¯šs[›9¦4ž¡¢š…™B²)¦™!¬š„˜R™s°~›#«V¬=›‰­V¨R®›u[™g¹ƒš~™N¬ ¨†±y™B²)[­~›RªÀ¡¢š„™#¦[°~›9¦[™
±y›u¨†±V§¢›[™k¨NœVœV§¯»žl©¨Iš~°V¨†¦[°„§¢¡±V¦[¨†¦4»¨I§¯ºB™#¦[¡¯[­~ªžŠ[™W¨†¦4¦[¨8»ƒž £
What have we gained with pointers?
2.6.9 Dynamic memory allocation
É ›9²VžºB™±C¨†˜©¹[™ `¦[™Bº#¦©¨Iª 8" šV™!¬ £ Ÿ,[ž€ª¨†¡¢š·°)¦©¨R¬
±Œ¨I˜[¹r¡¢ž`[­V¨†`[­~›šs²~ªr±y›'¦ ¡¢ž­V¨†¦[°)¬¡¯¦4›R°
2
¨Iž
¡¢šg[­~¡¢žœ~¦[™Bº#¦©¨IªY«R˲~žb±y›R˜8¨I²~ž4›[­~›§¢›9šVº#4­k™B³y¨Iš¨N¦4¦©¨R»g­V¨Iž[™d±.›¹ƒšV™!n¬š¨NŠ˜R™BªkœV¡¢§¯›
[¡¢ª1,› £ 000
à d§¢›R¨Ižb¡¢šS[­~¡¢ž¦[›Ržbœy›9˜98«{¨†¦4¦©¨R»žu¨†¦[›š~™#[­~¡¢š~ºžbœy›R˜9¡’¨I§>«.[­~™B²~ºB­ £ à §¢§p»sœy›Rž[­V¨†¬=›W­V¨R®›
ª›9e›R¨†¦[§¢¡¢›'¦¼
«
«)¨Iš~°
½Š­V¨8®›[­~›œ~¦[™#œy›'¦4»[­V¨†¨Ež4¡¢š~ºB§¢›™#±VĖ›R˜9=™B³2[­~›
»ƒœy›™ƒ˜R˜9²~œV¡¢›9int
ž—¨ )µunsigned
›R°¨Iª™B²~šsint
™B³.ª›Rª™#bool
¦b»E¹š~™!¬šk[™d4­V›˜R™BªkœV¡¢§¢›9¦=¼,³’™#¦—›'µ)¨IªkœV§¢›#« " ±V¡¯[ž€³’™#¦
¨Iš
™#±ŒÄ–›R˜9u™Bš‡ª¨†šs»YœV§’¨†[³’™#¦4ªž©½ £ ¡¯[­‡¨†¦4¦©¨R»ƒžR«p¨†š‡™#±ƒ®ƒ¡¢™B²~žšV›9›R°/¨†¦[¡¢žb›Rž[™h˜R¡¦[˜R²~ªr®›9šs
int
[­~¡¢že¦[›Ržl4¦[¡¢˜94¡¢™Bš £
Ÿ>šLÁÂu·«¨†¦4¦[¨8»ƒž¬­~™Bž4›‚§¢›Rš~º#[­•¡¢ž°~›9[›9¦[ª¡¯šV›9°¨†¦[²~šH[¡¢ª›„˜8¨†š•±y›‚™#±~©¨I¡¢š~›R° [­)¦[™B²~ºB­
(:H+&Dh*b\SD‡%9D‡3B78:¾&HO,O_3#\‘&H1>*b3B+ £Æ¿ ­)¦[™B²~ºB­ž4²~˜‘­J¨Iš5¨I§¢§¯™ƒ˜8¨†4¡¢™Bš2«p¬=›…˜'¦[›8¨†[›…¨Iš™#±ŒÄ–›R˜9r¬¡[­
(:H+&Dh*b\džb[™#¦©¨†ºB›u°~²)¦©¨†[¡¯™Bš £
±VĖ›R˜9[ž·[­V¨†·¬=›­V¨R®›ž4›R›Rš<ž4™‚³_¨†¦¬=›9¦[›c¨I§¢§[¡¢›R°/[™Y®#¨N¦[¡’¨†±V§¢›Rž9«`¡¢šÆ¬
­~¡¢˜©­˜8¨†ž4›ª›Rª™#¦4»
ºB›9[ž„¨Iž4ž4¡¢ºBš~›R°¾4™<[­~›Rª ¼>¨Iš~°L¡¢žh³¢¦[›9›R° ¨Iº¨I¡¢šŒ½¨†hœ~¦[›R°~›94›9¦[ª¡¢š~›R°Qœy™B¡¢šs4žh°~²)¦[¡¢š~ºœ~¦[™Bº#¦©¨†ª
›'µ›R˜R²)[¡¢™Bš•¼@¨I²)[™Bª¨†[¡¯˜g¨Iš~°žb©¨†[¡¯˜žb[™#¦©¨IºB›°~²)¦©¨†[¡¯™Bš^« ƒ›9˜9[¡¢™Bš ƒ£¥¤)£ " ½ £ ±ŒÄ–›R˜'[žW™B³°)»šV¨Iª¡¢˜
žb[™#¦[¨IºB›°V²)¦©¨N[¡¢™Bš¨†¦[›cšV™#[¡¯›R°[™‚®I¨†¦[¡’¨†±V§¢›9žR«Š¨†šV°Æ[­~›9»/ª¨R» bžb©¨†¦br4™F§¢¡®› ¼>ºB›9Wª›Rª™#¦4»
¨Iž4žb¡¢ºBš~›R°5[™Ž[­~›Rªc½W¨Iš~° b°~¡¢› ¼>ºB›94­V›9¡¯¦ª›Rª™#¦4»Æ³¢¦[›9›R°Œ½¨N‡&+y:œy™B¡¯šsk°~ ²)¦[¡¢š~ºjœ~¦[™Bº#¦©¨†ª
›'µ›R˜R²)[¡¢™Bš £¿ ­V›œV¦4™Bº#¦©¨Iªª›9¦ ˜8¨†š°V›'[›9¦[ª¡¢š~›=[­~›Rž4›œy™B¡¢šs4ž€®¡¢¨
¨Iš~°
›'µƒœ~¦[›Rž4ž4¡¯™BšVž £
new
delete
€
`©
8" È
¿ ­~›œ~¦[™Bº#¦©¨†ª ­V¨Iž—ž4™Bª›u¼,»ƒœV¡¢˜8¨†§¢§¯»¸ƒ²~¡¯4›§’¨†¦[ºB›8½¦[›RºB¡¯™Bš™B³.[­~›˜R™BªkœV²)[›9¦8Ç žŠª¨I¡¢šgª›Rª™#¦4»
¨R®#¨†¡¢§’¨†±V§¢›g4™Sžl[™#¦[›°)»šV¨Iª¡¢˜8¨†§¢§¯»F¨I§¢§¢™s˜8¨†[›9°Ž™#±ŒÄ–›R˜94ž £j¿ ­~¡¢žE¦[›RºB¡¢™B姬ž·˜8¨†§¢§¢›R°/[­~›Y?.%'&8] £ Ÿ,¡¢ž
¡¢š~¡¯[¡¢¨I§¢§¯»²~šƒ²~ž4›9°^«.±V²)¬
­V›9š‡¨Iš‚™#±VĖ›R˜9¡¢ž°)»šV¨Iª¡¯˜8¨I§¢§¯»c¨†§¢§¢™ƒ˜R¨†[›R°2«V¡¯¡¢ž
±.›R¡¢š~ºžb[™#¦[›9°F™Bš‚[­~›
­~›8¨†œ^«~ž4™W4­Œ¨N4­V›‰ª›Rª™#¦4»¨I˜9[²V¨I§¢§»²~ž4›R°„±ƒ»[­~›œ~¦[™Bº#¦©¨Iª º#¦[™!¬ž £
(
›9¦[›¡¢ž­~™!¬6[­~¡¢ž¬=™#¦4¹ƒž‰³’™#¦ `¦©¨†[™Bžl[­~›Rš~›RžRÇ^ ƒ¡¢›9®› £ ›Rª›9ªr±y›'¦
[­V¨†¬=›·¬¨IšH‰4­V›·§¯¡¢žb™B³
œ~¦[¡¢ª›šƒ²~ª±y›9¦[ž‰±y›9¬=›R›Rš
¨Iš~°
³¢¦[™Bª
£¿ ­~›k³’™B§¢§¢™!¬¡¢š~º®I¨†¦[¡’¨IšHd¦[›R¨I°~žu[­~›gšs²~ªr±y›'¦
n−1
n
žb©¨†šV°V¨†¦4°Ž¡¢š)œŒ²)d¨Iš~°Ž°)»šV¨I2ª¡¢˜8¨†§¢§¯»‚
¨I§¯§¢™ƒ˜8¨N[›Ržu¨Iš/¨†¦4¦©¨R»F™B³e§¢›Rš~º#[­
~
­
g
›
4
¦
R
›
ª
I
¨
¢
¡
~
š
~
°
9
›
‰
¦
B
™
—
³
[­~›
£c¿
n
œ~¦[™Bº#¦©¨Iª ¡¢ž·¨Ižd±.›R³’™#¦[›#«›'µ˜R›9œ~·[­V¨†E¬=››'µƒœV§¢¡¢˜R¡¯4§¯»S­Œ¨R®›k[™Y³¢¦4›R›[­~›°~»ƒšV¨Iª¡¢˜8¨I§¯§¯»‚¨I§¢§¯™ƒ˜8¨†4›R°
žb[™#¦[¨IºB›u¡¯š…[­~›‰›Rš~° £
# include < iostream >
// Program : eratosthenes2.C
// Calculate prime numbers in {2 ,... ,n -1} using
// Eratosthenes ’ sieve .
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";
delete [] crossed_out ;
return 0;
}
// free dynamic memory
™#[›‰[­V¨†4­V›u®#¨†¦4¡’¨†±V§¢›
new
£
n
Program 14:
8"
]27R39-M %R79&H143MR1@?.%R+`%RM.mt
¡¢žš~™N¬¨rœ.™B¡¢šs[›'¦¦©¨N[­~›9¦
[­V¨Iš‚¨†šY¨†¦4¦©¨R» .¨I³¢[›'¦
[­~›
°~›R˜R§’¨N¦©¨†[¡¢™Bš2«¡œ.™B¡¢šs[že[crossed_out
™r[­~› ~¦[žl
›R§¯›Rª›Ršs=™B³¨r°)»šV¨Iª¡¯˜8¨I§¢§¯»g¨I§¢§¯™ƒ˜8¨†4›R°h¨N¦4¦©¨R»c™B³p§¢›Rš~º#[­
´)™#¦‰¨Išs»…–»sœy› «.¨
The new expression.
[­)¦[›R›®I¨†¦[¡’¨IšH[ž £
new
›'µœ~¦[›9ž4ž4¡¢™Bš‚˜8¨IšS˜R™Bª›u¡¢šS¨Išs»h™B³[­~›·³’™B§¢§¢™!¬¡¢š~º
new
¼ £¯££ ½
new
"!#*%'
new
>Ÿ š5¨I§¢§=˜8¨†ž4›RžR«Š4­V›c›'µƒœV¦4›Rž4ž4¡¢™BšJ¦4›9[²)¦[š~žg¨†š<¦4®I¨I§¢²~›…™B³»ƒœy› 8£ Ÿ,[ž®#¨I§¯²V›c¡¢ž·[­~›„¨†°V°)¦[›9ž4ž
™B³¨Iš™#±VĖ›R˜9r™B³e»ƒœy› [­V¨†­V¨IžE±y›R›9š<°)»šV¨Iª¡¢˜R¨I§¢§¯»F¨I§¢§¯™ƒ˜8¨†4›R°Ž™Bš[­~›­~›8¨†œ £‡¿ ­~›™#±VÄl›9˜9
¡¯[žb›R§¢³Š¡¯žd¨Iš~™BšH»ª™B²~žR«y±V²~u¬=›W²~ž4²V¨I§¯§¯»‚žb[™#¦[›r[­~›W¦[›9ž4²~§¯[¡¢š~º…¨I°~°~¦4›Rž4žd²~š~°~›9¦·¨®I¨†¦[¡’¨†±V§¢›ršV¨Iª› £
Ÿ>š `¦[™Bº#¦©¨Iª R¤ «)¬=›‰˜8¨I§¢§2¡¯
£
crossed_out
›‘µœ~¦[›Rž4žb¡¢™Bš5¡¢ž[™j°)»šV¨Iª¡¢˜R¨I§¢§¯»
Ÿ>šJ[­~› ~¦[žbk¨Iš~°Jž4›R˜9™BšV°5
®I¨†¦[¡’¨†šs8«Š4­V›…› ›9˜9k™B³[­~›
new
¨I§¢§¯™ƒ˜8¨†4›=¨rM9*0+.-O_%d™#±VĖ›R˜9€™B³C»ƒœy› ™Bšg[­~›­~›8¨†œ £ ¨†¦[¡’¨IšH §¢›8¨R®›Rž[­~›™#±VĖ›R˜9€²~šV¡¯šV¡[¡’¨I§¢¡ R›R°·¡¢³
T
¡¢ž¨
³’²~š~°V¨Iª›RšH©¨I§s»sœy›#«#¬­~¡¢§¯›€®I¨†¦[¡’¨IšH ¡¢š~¡¯[¡’¨†§¢
¡ R›Rž2[­~›eš~›9¬5™#±VĖ›R˜9¬
¡¯[­·¬­V¨†[›'®›9¦¨†œ~œy›8¨N¦[ž
¡¢šYœŒ¨†¦[›RšH[­~›Rž4›Rž £ ´)™#¦›‘µ~¨IªkœV§¢›#«V[­~›E³’™B§¢§¢™!¬¡¯šVºW°~›R˜R§’¨†¦[¨†[¡¢™Bš~ž
¡¯šV¡[¡’¨I§¢¡ R›[­~›E®#¨†¦4¡’¨†±V§¢›Rž ¨Iš~° «
i
j
±y™#[­…™B³p»ƒœy›
«)¬
¡¯[­…4­V›u¨I°~°)¦[›Rž4žb›Rž
™B³^–¬=™Wš~›9¬ ™#±ŒÄ–›R˜94ž™B³p»sœy›
£
int*
int
int * i = new int ;
int * j = new int (6);
// * i is undefined
// * j is 6
¢¡ ºB­Heš~™N¬d«ƒ¡¢³.¬=›¬¨†šs[›R°¬=™·ž4²~˜©­h™#±VĖ›R˜9[ž—™B³y»ƒœ.›
«s¬=›#Ç¥°¦©¨†[­~›9¦—²Vžb›®#¨†¦4¡’¨†±V§¢›RžŠ¬
¡¯[­
int
¨I²)[™Bª¨†4¡¢˜žb[™#¦[¨IºB›u°~²)¦©¨†4¡¢™Bšh¨†šV°…¬
¦[¡¯4›
int i ;
// i is undefined
int j = 6;
// j is 6
h™#¦[›¡¢šH[›9¦[›9žb[¡¢š~º‰³’™#¦—²~ž—¡¢ž[­~›[­~¡¯¦4°g®#¨N¦[¡’¨IšH £ Ÿ>³ "!#&%u­V¨Iž€¡¢šs4›RºB›9¦Š®I¨I§¢²~›
« [­~›
› ›R˜9
™B³e[­~›
›'µƒœ~¦[›Rž4ž4¡¯™Bš¡¢žE4™Y°~»ƒšV¨Iª¡¢˜8¨I§¯§¯»S¨I§¢§¢™s˜8¨†[›g¨I𯍆¦4¦©¨R»Ž™B³=§¢›9šVº#4­
¬¡[­/²Vš~°~›9¦[§»¡¢š~º
new
n
»ƒœy› ™Bš‚[­~›E­~›8¨†œ £¿ ­~›E¦[›9[²)¦[š‚®#¨†§¢²~›·¡¢ž
[­~›¨I°~°)¦[›Rž4ž™B³`[­~› ~¦[žb›9§¢›Rª›RšH £¿ ­~¡¢ž¡¢ž
¬
­Œ¨N
¬=›‰ž4›R›d¡¯š„§¢¡¢š~› ÈW™B³ ¦[™Bº#¦[¨Iª R¤)£
à ž²Vžb²Œ¨†§>«[­~›
¨N¦4¦©¨R»c›R§¢›Rª›RšH[že¦[›Rª¨I¡¯š…²~š~¡¢š~¡¯[¡’¨†§¢
¡ R›R°¡¯³ ¡¢ž
¨³’²~š~°Œ¨†ª›Ršs©¨†§.–»sœy› £
n 0
n
»šV¨Iª¡¢˜8¨†§¢§¯»S¨I§¢§¯™ƒ˜8¨†4›R°Žª›Rª™#¦4»S[­V¨†¡¢ž·š~™‚§¢™Bš~ºB›9¦š~›R›R°~›R°ž4­~™B²V§¯°
±y›u³¢¦[›R›R° £ Ÿ>šSÁÂu·«Œ4­V›œ~¦[™Bº#¦©¨Iªª›'¦=°V›9˜R¡¢°~›Rž¨N¬
­V¡¯˜‘­…œy™B¡¢šs=[­~¡¢ž¡¢ž[­~›u˜8¨†ž4› £* »šV¨Iª¡¢˜
The delete expression.
1I1'3
$@ +K)19 +- 5L+@5 3( KJK"5
!"#G<%$ *"8D(+-!9:1() K"(C
3()5H-%$@+
$@09
+JK@@5 ();"" '&)(*(+;KM(-,BK("7>9:( "@$" )5:9%@9:;1 <.$F
+J"J-D KL+() 3( %9%9:;?8;(N+8B2 +">/&)(*(
<
=7$().+()L() 81(+9*9*8!8 KN+8D"
9:9:1(-, $
$+
<
=7$"%+K)19
1(L+9%
*(;"">"%+5
€
`©
8"
žb[™#¦[¨IºB›°V²)¦©¨N[¡¢™BšS¡¢ªkœV§¢¡¢›Rž[­V¨†°)»šV¨Iª¡¢˜8¨†§¢§¯»h¨I§¢§¢™s˜8¨†[›R°‚™#±VĖ›R˜9[ž§¢¡¯®›²~šs4¡¢§p[­~›·œ~¦[™Bº#¦©¨Iªˆ[›9¦lÅ
ª¡¢šV¨†[›9žR«²Vš~§¢›9ž4žŠ[­~›9»k¨†¦[››'µƒœV§¢¡¢˜R¡¯4§¯»³¢¦[›R›R° £ »šV¨Iª¡¢˜8¨†§¢§¯»·¨†§¢§¢™ƒ˜R¨†[›R°kª›9ª™#¦4»¡¢ž—ª™#¦[› V›'µ)¡±Œ§¯›
[­V¨Iš…žb©¨†[¡¯˜uª›Rª™#¦b»«s±V²)¡¯šh¦[›9[²)¦[šh¡¯¨I§¢ž4™r¡¢šs®™B§®›Ržžb™Bª›u¨†°Vª¡¯šV¡¯žb4¦©¨†4¡¯®›
› ™#¦4 £
›'µƒœ~¦[›Rž4ž4¡¯™BšVž©¨†¹›‰˜8¨†¦[›u™B³p³¢¦[›9›R¡¢š~ºkª›Rª™#¦4» £¿ ­~›9»c˜R™Bª›¡¢šh¬=™®#¨N¦[¡’¨IšH[ž £
¿ ­~›
delete
delete
'
delete
!$#&%
!$#&%
Ÿ>šF±.™#[­F®I¨†¦[¡’¨†šs[žR« "!#&%ª¨8»h±y›r¨cšs²V§¯§œy™B¡¢šs4›9¦8«y¡¢šS¬­~¡¢˜©­F˜R¨Iž4›W4­V›
›'µœ~¦[›9ž4ž4¡¢™Bšj­V¨Iž
delete
š~™g› ›R˜9 £
4­V›'¦4¬¡¢žb›#«s¡¯šW[­~› ~¦[žl€®I¨†¦[¡’¨†šs8« "!#*%ªr²~žb±y›¨œy™B¡¯šs[›9¦[™d¨‰žb¡¢š~ºB§¢›=™#±ŒÄ–›R˜9[­V¨†­V¨Iž€œ~¦[›‘Å
®¡¯™B²Vžb§¯»E±y›R›9šk°)»šV¨Iª¡¢˜8¨†§¢§¯»u¨I§¢§¢™s˜8¨†[›9°¬
¡¯[­[­~› ~¦[žl€™#¦ž4›9˜R™Bš~°g®#¨N¦[¡’¨IšH€™B³~[­~›
›'µœ~¦[›9ž4ž4¡¢™Bš £
new
¿ ­V›
› ›R˜'=¡¢žŠ[™·ª¨†¹›[­~›˜R™#¦4¦4›Ržbœy™Bš~°~¡¢š~ºEª›Rª™#¦4»r¨R®I¨I¡¢§’¨N±Œ§¯›
¨Iº¨†¡¢š³’™#¦ež4²)±Vž4›R¸s²V›9šs=°)»šV¨Iª¡¢˜
¨I§¢§¯™ƒ˜8¨†4¡¢™Bš~ž—™Bšh[­~›‰­V›R¨†œ £
™#±ŒÄ–›R˜94ž°)»šV¨Iª¡¯˜8¨I§¢§¯»g¨I§¢§¯™IÅ
´)™#¦›'µ)¨IªkœV§¢›#«)¨†¨·œy™B¡¢šH¡¯š…[­~›œV¦4™Bº#¦©¨Iªw¬­~›9¦[›‰[­~›‰¬=™
int
˜8¨†4›R°h[­)¦[™B²~ºB­
int * i = new int ;
int * j = new int (6);
// * i is undefined
// * j is 6
¨†¦[›‰š~™g§¢™Bš~ºB›9¦š~›R›R°~›R°2«~¬=›‰¬=™B²~§¢°c¬
¦[¡[›
delete j;
delete i;
¿ ­~›=™#¦[°~›9¦™B³V°V›9§¢›9[¡¢™Bš°~™ƒ›9žš~™#ª¨†44›9¦­~›9¦[›I«H±V²)ª¨Išs»dœV¦4™Bº#¦©¨Iªª›9¦[ž^˜R™Bš~ž4¡¢°~›9¦¡¯§¯™BºB¡¢˜8¨I§
[™
œy™B¡¯šs[›9¦4ž
¡¢šY[­~›E¡¢šH®›9¦[ž4›·™#¦4°V›'¦™B³`°~»ƒšV¨Iª¡¢˜u¨I§¢§¢™s˜8¨†[¡¢™Bš2ʊŸ>³»™B²‚š~›R›R°‚[™²~š~°~™g¬=™
delete
žb[›'œŒž9«~»™B² ~¦[žl
²~š~°~™r[­~›‰ž4›R˜R™Bš~°Yžb4›9œ £
Ÿ>š‡[­~›rž4›R˜R™Bš~°j®I¨†¦[¡’¨IšH‰™B³Š[­~›
›'µƒœV¦4›Rž4ž4¡¢™Bš2« "!$#&%ªr²Vžl‰±.›g¨œy™B¡¢šH[›9¦[™[­~›~¦[žb
›R§¢›9ª›Ršsp™B³~¨Išr¨†¦4¦©¨R»d4­Œ¨N­V¨Ižœ~¦[›9®ƒdelete
¡¢™B²~ž4§¯»‰±y›R›Rš°)»šV¨Iª¡¢˜R¨I§¢§¯»¨†§¢§¢™ƒ˜R¨†[›R°d¬
¡¯[­E[­~›Š4­V¡¦[°E®#¨N¦[¡’¨IšH
›‘µœ~¦[›Rž4žb¡¢™Bš £€¿ ­~›¬
­V™B§¯›ª›Rª™#¦b»™ƒ˜R˜R²)œV¡¢›R°W±ƒ»g4­V›
¨†¦4¦©¨R»W¡¢žœŒ²)€±C¨†˜©¹W™Bšk[­~›
­~›8¨Nœ
™B³C[­~›
new
³’™#¦¦[›R²~ž4› £ c¿ ­~¡¢ž­V¨†œ~œy›Rš~ž=¡¢š„§¢¡¢š~› " ™B
³ ¦4™Bº#¦©¨Iª R¤)£
Ÿ>³p[­~›uœV§’¨†¡¢š
¡¢ž¨†œ~œV§¢¡¢›9°…[™g¨rš~™BšÅ@šs²V§¯§^œy™B¡¯šs[›9¦=[­V¨†°~™ƒ›Ržš~™#œy™B¡¯šs[™k¨r°~»ƒšV¨IªgÅ
¡¢˜8¨†§¢§¯»F¨I§¢§¢™s˜8¨†[›9°Ždelete
ž4¡¢š~ºB§¢›g™#±VĖ›R˜98«4­V›k±.›R­V¨8®ƒ¡¢™#¦E¡¯žE²~šV°~› Vš~›R° £Y¿ ­~›ž[¨Iª›k¡¢žu4¦[²~›k¡¢³=™Bš~›g4¦[¡¯›Rž
[™
¨Iš‡¨N¦4¦©¨R»„¬­~›9¦4›E[­~›9¦[›·¡¢ž™Bš~§¯»„¨kž4¡¢š~ºB§¢›E™#±VĖ›R˜9 £ à ž‰¨I§¬¨8»ƒž
¬¡[­„œy™B¡¢šH[›9¦[žR«Œ[­~›
ÁÂudelete[]
Â6§’¨Iš~ºB²V¨IºB›°~™ƒ›Ržš~™#
™ ›9¦
¨Išs»cª›8¨Iš~ž=™B³°~›9[›9˜9[¡¢š~ºrž4²~˜‘­Y›'¦4¦[™#¦[ž £
à §¯[­~™B²~ºB­r¨I§¢§)ª›Rª™#¦4»E¨I§¢§¢™s˜8¨†[›9°r±s»g¨œ~¦[™Bº#¦©¨†ª ¡¯ž€¨†²~4™Bª¨†[¡¢˜8¨†§¢§¯»‰³¢¦[›R›R°W¬­~›Rš
[­~›dœ~¦[™Bº#¦©¨†ª [›9¦[ª¡¯šŒ¨N[›RžšV™#¦4ª¨I§¢§¯»«)¡¯¡¢ž
®›9¦4»h±C¨†°‚œ~¦©¨†˜9[¡¢˜R›u[™k¦[›R§¯»„™Bš‚4­V¡¯ž³_¨I˜9³’™#¦³¢¦4›R›R¡¢š~º
°)»šV¨Iª¡¢˜R¨I§¢§¯»/¨†§¢§¢™ƒ˜R¨†[›R°ª›Rª™#¦4» £ Ÿ>³¨‚œ~¦[™Bº#¦©¨Iª °V™s›Ržkš~™#k›‘µœV§¢¡¢˜R¡[§¯»/³¢¦[›R›„¨I§¢§°~»ƒšV¨Iª¡¢˜8¨I§¯§¯»
¨I§¢§¯™ƒ˜8¨†4›R°5ª›Rª™#¦4»¡¯¡¢žž4¨I¡¢° [™/­Œ¨R®›S¨<D‡%9D‡3B78:LO_%'&HG £ ƒ²~˜©­¾§¢›8¨†¹ƒž¨†¦[›Y™B³¢[›9š¾¨jž4¡¢ºBšQ™B³
±Œ¨I°h˜9™ƒ°~¡¢š~º £¿ ­~›9»c²~ž4²V¨I§¢§¯»k­Œ¨R®›ušV™r¡¢ªª›R°~¡’¨N[›˜9™BšVžb›R¸ƒ²~›Rš~˜R›Rž9«Œ±V²)¬
¡¯[­~™B²)=³¢¦[›R›R¡¯šVºW²~šƒ²~ž4›R°
Memory leaks.
=7$"
9%@H"M$@+2$@Q81$
$J"A J&M0PO ""
13?*5-;N+9*+-
$"781$
3(19
$
+B5
(18 (9
<
/!*1KN+-
((-
"A(5." 9:&'$()0&'H$
$@
8"
žb[™#¦[¨IºB›#«~¨·œV¦4™Bº#¦©¨Iªw¦[²~š~šV¡¯šVºr³’™#¦
¨r§¢™Bš~º[¡¢ª›·¼,4­V¡¯š~¹™B³{™#œy›9¦©¨N[¡¢š~ºžb»žb4›RªÍ¦[™B²)[¡¯šV›9ž©½—ª¨8»c¨N
ž4™Bª›œy™B¡¢šHž4¡¢ªkœV§¯»›'µ­V¨I²~žb4­V›u¨R®#¨†¡¢§’¨†±V§¢›­~›8¨†œ„žb[™#¦©¨IºB› £
¿ ­~›9¦4›R³’™#¦[›#«~¬=›u­V¨R®›u4­V›‰³’™B§¢§¢™!¬¡¯šVººB²~¡¢°~›R§¢¡¯šV› £
Dynamic Storage Guideline:
š~›9¬ ¨Iš~°h°~›R§¢›'[›u›‘µœ~¦[›Rž4žb¡¢™Bš~ž
ž4­~™B²~§¢°„¨†§¯¬¨R»ž˜R™Bª›¡¢šhª¨†4˜‘­~¡¢š~º·œŒ¨I¡¯¦[ž £
2.6.10 Arrays of characters
ƒ›R¸s²V›9šV˜9›Rž™B³p˜©­V¨†¦©¨†˜9[›9¦[ž›Rš~˜R§¢™Bž4›9°„¡¢š„°~™B²)±V§¢›¸ƒ²~™#[›Rž§¢¡¯¹›¡¢š
std :: cout < < " Prime numbers in {2 ,... ,999}:\ n";
¨†¦[›‰˜8¨I§¯§¢›R°‡M91>78*,+.-YOP*>14%979&HOM £ ƒ™³_¨†¦¬=›·­V¨8®›·²~ž4›9°Fžbb¦[¡¢š~º§¢¡¯[›'¦©¨I§¢ž™Bš~§¯»h¬
¡¯[­~¡¢š„™B²)4œV²)›'µƒœV¦4›Rž4ž4¡¢™Bš~žR«.±V²)¬=›·˜8¨†š‚¬=™#¦b¹
¬¡[­d[­~›Rª6¡¯š·™#[­~›9¦˜R™BšH[›'µƒ[ž`¨Ižp¬=›9§¢§ £ h™Bžl`š~™#©¨†±V§¯»«†¨
žb4¦[¡¯šVº§¢¡¯[›'¦©¨I§H˜8¨IšE±y›—²~ž4›9°4™¡¢š~¡¯[¡’¨I§¯
¡ R›
¨Iš¨†¦4¦©¨R»Ž™B³·\8?C&7'&~\814%R7!M £ Á=­V¨†¦[¨I˜9[›9¦4ž·¨†¦[›[­~›k±V²~¡¢§¢°~¡¢š~º…±V§¢™s˜©¹ƒž·™B³e[›'µr¨†žE¬=›k¹š~™N¬ ¡¯ £ Ÿ>š
ÁÂu·«V4­V›'»h¨N¦[›uª™s°~›R§¢›R°±ƒ»c[­~›u³’²~š~°V¨Iª›RšH©¨I§.»ƒœy›
[­V¨†=¬=›u±~¦[¡¢› V»°~¡¢žb˜R²~ž4žš~›'µƒ £
char
¿ ­~›…³’²~š~°V¨Iª›RšH©¨I§Š»ƒœ.›
¦4›9œ~¦[›Rž4›RšH[žg˜©­V¨†¦©¨†˜9[›9¦[ž £ Áe­V¨†¦©¨I˜'[›9¦[ž¡¢š~˜R§¢²~°~›
The type char.
[­~›‚Oi%R1@14%R7!M
[­)¦[™B²~ºB­
¼>¨I§¢™Bš~º„¬¡¯4­/4­Vchar
›9¡¯¦˜8¨†œV¡¯©¨†§€®›9¦[žb¡¢™Bš~ž
[ ­)¦[™B²~ºB­
½'«[­~›‡(*i-B*>1@M
a
z
A
Z
0
[­)¦[™B²~ºB­ «Œ¨†ž¬=›R§¯§{¨†žšs²Vª›'¦[™B²~ž™#4­V›'¦dMl].%9\R*–&HO=\R?C&79&~\814%R7!Mr§¢¡¯¹› #™ ¦ £€¿ ­V›‰¢§ ¡¢š~›
9
char c = ’a ’;
°~›Vš~›RžŠ¨®I¨†¦[¡’¨N±Œ§¯› ™B³Œ»ƒœ.›
¨Iš~°r®#¨I§¯²V›
«B¦[›'œV¦4›Rž4›RšH[¡¢š~ºu[­~›=§¢›9b[›9¦ £¿ ­~››'µœ~¦[›9ž4ž4¡¢™Bš
c
char
’a’
a
¡¢ž¨§¢¡¯[›'¦©¨I§™B³ƒ»ƒœy›
£`¿ ­~›Š¸ƒ²~™#[›9ž`¨†¦[™B²~š~°d[­~›e¨I˜'[²V¨I§s˜©­V¨†¦©¨†˜9[›9¦pžb»ª±y™B§H¨†¦[›—š~›R˜9›Rž4ž[¨†¦b»
’a’
char
³¢¦[™Bª [­~›u¡¯°V›9šs[¡ V›9¦ £
¡¢š…™#¦[°~›9¦
[™r°~¡¢žb[¡¯šVºB²~¡¢žb­c
[­~›‰§¢¡¯[›'¦©¨I§
’a’
¡¢ž‰¨IšF¡¢šs4›Rº#¦©¨I§»ƒœ.›#Ê¡¯‰­Œ¨†ž‰[­~a›ž[¨Iª›™#œy›'¦©¨†[™#¦[ž‰¨Iž[­~›–»sœy›Rž
´)™#¦[ª¨I§¢§¯»«V[­~›r»sœy›
™#¦
«)¨Ichar
š~°[­~›‰Á‰ žl©¨Iš~°V¨†¦[°›9®›Ršœy™Bžb[²~§’¨N[›Rže¨uœ~¦[™Bª™#4¡¢™Bšg³¢¦[™Bª
[™
int
™#¦ unsigned int £ Ÿ,·¡¢žr+`31·žbœy›R˜R¡ Œ›9°^«{[­~™B²VºB­2«^[™„¬­~¡¢˜©­Ž¡¢šH[›RºB›9¦u[­~›k˜©­Œ¨N¦©¨I˜9[char
›'¦
«
int
unsigned int
’a’
ž[¨R»«~¬¡¢§¢§Œ±y›uœ~¦[™Bª™#[›9° £ š~°~›9¦[­~›‰¬
¡¢°~›R§¯»²~ž4›R°
˜R™ƒ°~›W¼ ª›9¦4¡¢˜8¨Iš ©¨†šV°V¨†¦4° ™ƒ°~›u³’™#¦
ASCII
A
S
C
š~³’™#¦[ª¨N[¡¢™Bš šs4›9¦[˜©­V¨Iš~ºB›!½'«~¡¯¡¢ž=[­~›u¡¢šH[›RºB›9¦
£
I
I
97
¿ ­~¡¢žežb›94[¡¢š~º·ª¨R»kš~™#=ž4›9›Rªw®›9¦4»²~ž4›R³’²~§>«)¨†šV°c¡¢š~°~›R›R°c¡¯eª¨†¹›9ž—§¢¡¯44§¢›
ž4›9šVžb›4™r°~¡¯®ƒ¡¢°~›™Bš~›
˜©­V¨†¦©¨I˜94›9¦±ƒ»W¨Iš~™#[­~›9¦ £ šW4­V›=™#[­~›9¦­V¨Iš~°2«B¬=›˜R¨Išg³’™#¦›'µ)¨IªkœV§¢›Šœ~¦[¡¢šH4­V›¨I§œŒ­V¨†±.›9[­)¦[™B²~ºB­
™Bš~›užb¡¢ªkœV§¢›§¢™ƒ™#œ‡¼@¨Iž4žb²Vª¡¯šVº
›Rš~˜R™s°V¡¯šVºH½ £ `µ›R˜R²)[¡¢™Bš„™B³{[­~›
Å@§¢™s™#œ
ASCII
for
for ( char c = ’a ’; c <= ’z ’ ; ++ c)
std :: cout < < c;
¬
¦4¡¯[›Rže[­~›‰˜‘­V¨†¦[¨I˜9[›9¦
ž4›R¸s²V›9šV˜9›
abcdefghijklmnopqrstuvwxyz
7
B H$@( H(+"1
" (8 H(+" (7IHK@"K
K
J- ;
&M0&71 O '@5 $"A;()" 8Q3F)"<
$2/
13NA()-B8
)09:;5H3 -Q$@9
"
K@55
€
`©
R¤
[™Wžb©¨Iš~°V¨†¦[°…™B²~bœŒ²) £ ¡¯®›Ršh[­~¡¢ž9«»™B²„ª¨R»[­~¡¢š)¹[­V¨†4­V›‰§¢¡¢š~›
std :: cout < < ’a ’ + 1;
œ~¦[¡¢šH[ž
«±V²)W¡°V™s›Rž4š2Ç  £ ƒ¡¢š~˜R›[­~›™#œy›9¦©¨†šV°~ž·™B³[­~›c˜9™Bªkœy™Bž4¡¯[›W›'µœ~¦[›9ž4ž4¡¢™Bš
¨†¦4›
™B³°V¡ ›9’b’
¦[›9šs»ƒœy›9žR«y[­~›·§¢›R³¢‰™#œy›9¦©¨†šV°S™B³–»sœy›
¬¡¯§¢§¨I²)[™Bª¨N[¡¢˜8¨I§¯§¯»±y›Eœ~¦[™Bª™#[’a’+1
›R°Y[™[­~›
ª™#¦[›ºB›Rš~›9¦©¨I§C»sœy›
™B³y[­~›¦[¡¯ºB­s—™#œ.›9¦©¨Iš~° £char
¿ ­~›9¦[›9³’™#¦[›#«ƒ[­~›»ƒœ.›™B³.[­~››'µœ~¦[›Ržbž4¡¢™Bš
int
¡¢ž
«y¨Iš~°S¡¯[ž
®I¨I§¢²~›·¡¢ž
¼@¨†ž4ž4²~ª¡¢š~º
›Rš~˜R™s°V¡¯šVºH½y¨Iš~°S4­Œ¨N8Ç¥ž
¬
­V¨†ºB›9[žœ~¦[¡¢šH[’a’+1
›R° £ Ÿ>³
int
ASCII
»™B²h
¬¨IšH
4™W±y›œ~¦[¡¢šs98
4›R°2«»™B²„ªW²~žb
²~ž4›‰[­~›u›'µƒœV§¢¡¢˜R¡¯=˜9™Bšs®›9¦[žb¡¢™Bš
£
’b’
char(’a’+1)
¿ ­~›€˜8¨†[›RºB™#¦b»d™B³žlœy›R˜R¡’¨†§H˜©­V¨†¦©¨†˜9[›9¦[žp¨I§¢ž4™¡¢š~˜R§¢²~°~›Rž=\93B+21>7R3O2\8?C&79&~\814%97!M[­V¨†=(~3ž4™Bª›'[­~¡¢š~º
¬­~›RšQœ~¦[¡¢šs4›R° £¿ ­~›Rž4›F¨†¦[›Y¬
¦[¡4[›Rš5¬¡[­Q¨/§¯›8¨I°~¡¢š~ºj±Œ¨I˜[¹ž4§’¨†ž4­2«¨Iš~° [­~›Sª™Bžl¡¢ªkœy™#¦4[¨Išs
˜R™BšH4¦[™B§2˜©­Œ¨N¦©¨I˜9[›'¦³’™#¦²Vž¡¢ž
«)¬­~¡¢˜©­…˜8¨I²~ž4›Rž
¨r§¢¡¯šV›±~¦[›8¨N¹ £
’\n’
šcª™BžbœV§’¨†[³’™#¦[ªž9«ƒ¨
®#¨†§¢²~›™ƒ˜R˜9²~œV¡¢›9ž ±V¡¯[žŠ™B³yª›Rª™#¦4» ¬­~›94­V›'¦Š[­~›
®I¨I§¢²~›
¦©¨†šVºB›
8
˜R™#¦4¦4›Ržbœy™Bš~°…4™W[­~›ž4›9™B³p¡¢šHchar
[›RºB›9¦4ž
¼,[­~›‰ž4¡¢ºBš~›R°c˜8¨Iž4›8½=™#¦[­~›ž4›9
{−128, . . . , 127}
. . . , 255}
¼,[­~›·²~š~ž4¡¢ºBš~›R°S˜8¨Iž4›8½¡¯ž¡¢ªkœV§¢›Rª›RšH©¨†[¡¯™Bš…°~› Vš~›R° £ ƒ¡¯šV˜9›¨I§¢§ à )Á=ŸbŸe˜©­V¨†¦©¨I˜'[›9¦[ž­V{0,
¨R®›r
¡¯šs[›RºB›'¦
®I¨I§¢²~›Rž¡¢š
«4­V›'»…˜R¨Išh±y›¦[›9œ~¦[›9ž4›Ršs4›R°‚¡¢š…±y™#4­h˜8¨Ižb›Rž £
{0, . . . , 127}
à [›‘µe¡¢ž€ž4¡¢ªkœV§¯»r¨džb›R¸ƒ²~›Rš~˜R›™B³y˜©­V¨†¦©¨I˜'[›9¦[že¨†šV°˜8¨†šk±y›ª™ƒ°~›R§¯›R°k¡¢š
ÁÂu[­)¦[™B²~ºB­„¨†šY¨†¦4¦©¨R»¬¡[­h²~š~°~›9¦[§¯»ƒ¡¢š~º»sœy›
£ ´)™#¦›'µ~¨IªkœV§¢›I«ƒ[­~›u°~›R˜9§’¨†¦©¨†4¡¢™Bš
From characters to text.
char
char text [] = { ’b ’ , ’o ’ , ’o ’ , ’l ’}
°~›Vš~›Rž
¨†šY¨†¦4¦©¨R»c™B³§¢›9šVº#4­
[­V¨†=¦[›9œ~¦[›Rž4›9šs[ž
4­V›[›'µƒ £
4
à §¯[›'¦[šV¨†[¡¯®›R§»Y¼@¨Iš~°hª™#¦4›‰˜9™Bšs®›Rš~¡¢›RšH[§¯»)½'«)¬=›u˜8¨†šh¬
¦[¡[›
char text [] = " bool "
¿ ­V¡¯žR«­~™N¬=›'®›9¦8«)¡¢ž+`31›R¸ƒ²~¡¯®I¨I§¢›9šse[™·[­~›³’™#¦[ª›9¦e°~›R˜9§’¨†¦©¨†4¡¢™Bš £ ­V›9š„¨Iš…¨†¦4¦©¨R»™B³^˜©­Œ¨N¦©¨I˜9[›'¦[ž
¢¡ ž=¡¢š~¡¯[¡¢¨I§¢¡
R›9°g¬¡¯4­…¨·žbb¦[¡¢š~º§¢¡¯[›9¦[¨I§>«s4­V›[›'¦[ª¡¢šV¨†[¡¢š~º s%R7R3F\8?C&79&~\814%R7
¼,™B³{¡¢šH[›RºB›9¦e®I¨I§¢²~›
’\0’
½¡¢žd¨†²~4™Bª¨†[¡¢˜8¨†§¢§¯»h¨†œ~œy›Rš~°~›R°j[™…4­V›g¨†¦4¦©¨R» £¿ ­~¡¢žd˜©­V¨†¦©¨†˜9[›9¦d°V™s›Rždš~™#u˜R™#¦4¦[›9žbœy™Bš~°j[™Y¨IšH»
0
œ~¦[¡¢šH©¨†±V§¢›d˜©­V¨†¦©¨†˜9[›9¦ £ à ³¢[›9¦4­V›·§¢¨†4[›9¦
°~›R˜R§’¨†¦[¨†[¡¢™Bš2«~[­~›·¨†¦4¦©¨R»
[­~›9¦[›R³’™#¦4›r­V¨Iž
§¢›Rš~º#[­ £
text
«
«
«e¨Iš~°
«e¨Iš~°<[­~› Œ³¢4­J›R§¢›Rª›9šsW¡¢žr4­V› R›9¦45™
¿ ­V› ~¦[žbW³’™B²~¦g›R§¢›Rª›9šs[žW¨†¦[›
’b’ ’o’ ’o’
’l’
˜©­V¨†¦©¨I˜94›9¦
£
’\0’
›=˜8¨I§¯§)ž4²~˜‘­g¨IšW¨†¦4¦©¨R» s%R793Ub14%R78D…*,+&H14%'( £ š~§¢¡¯¹›ŠšV™#¦4ª¨I§¨†¦b¦©¨R»žR« R›9¦4™IÅ>[›9¦4ª¡¢šV¨†[›R°r¨†¦4¦[¨8»ƒž
l¹š~™!¬
[­~›R¡¯¦u§¢›Rš~º#[­ £k¿ ™…ºB›9‰[­~¡¢žu§¯›Rš~º#[­2«^¬=›Wž4¡¢ªkœV§¯»Y­V¨R®›W[™h¡¯[›9¦©¨N[›W™!®›9¦u[­~›k¨†¦4¦[¨8»F¨Iš~°
˜R™B²~šs[ ­~›‰šƒ²~ªr±.›9¦™B³›R§¢›Rª›9šs[že±y›R³’™#¦4›‰[­~›‰[›9¦[ª¡¢šV¨†4¡¢š~º
£
’\0’
(
›9¦[›·¡¯ž¨IšF¨†œ~œŒ§¯¡¢˜8¨†[¡¯™Bšh™B³=¼@¨†¦4¦[¨8»ƒž™B³4½˜‘­V¨†¦[¨I˜9[›9¦4ž £ q21>78*,+.-SDF&H14\R?*,+.-‚¡¢ž4­V›uœV¦4™#±Œ§¯›Rª ™B³
Vš~°V¡¯šVºu[­~› V¦4žbe™#¦¨I§¢§Œ™ƒ˜R˜9²~¦b¦[›Rš~˜R›Rže™B³^¨EºB¡¯®›Ršž4›R¨†¦[˜©­hžbb¦[¡¢š~ºk¼>²~ž4²V¨I§¢§»gž4­~™#¦4©½€¡¢šc¨EºB¡¯®›Rš[›'µƒ
¼>²~ž4²V¨I§¢§»§¢™Bš~ºH½ £
«
¿ ­~›‰™#±ƒ®ƒ¡¢™B²~žež4™B§¢²)[¡¢™Bš¡¢že[­~›³’™B§¢§¢™!¬¡¢š~º)Ê`¨†ž4ž4²~ª¡¢š~ºE[­V¨†e[­~›ž4›8¨†¦4˜‘­hžb4¦[¡¢š~º­V¨Iž=§¢›Rš~º#[­
¬=›r˜R™BªkœŒ¨†¦[›¡¯‰˜©­Œ¨N¦©¨I˜9[›'¦4¬¡¢žb›¬
¡¯[­S[­~›W›R§¯›Rª›Ršs4ž
™B³€[­~›[›'µƒ £ Ÿ>³Š¨cª¡¯ž4ª¨†[˜©­Ym¡¢ž
³’™B²~š~°S³’™#¦ž4™Bª›E›R§¢›9ª›Ršs8«)¬=›Ežl[™#œF¨Iš~°Sš~›'µƒ˜R™BªkœŒ1,
¨†¦[2,
›‰[...,
­~›Em
ž4›8¨N¦[˜©­Fžbb¦[¡¢š~ºg¬¡[­h[­~›E›R§¯›Rª›Ršs4ž
™B³~[­~›=[›'µR«H¨Iš~°gž4™‰™Bš £ ƒ›9[ž™B³
˜9™BšVžb›R˜R²)[¡¯®››R§¢›Rª›9šs[ž
2, 3, . . . , m + 1
m
i, i + 1, . . . , i + m − 1
¡¢šc[­~›‰[›‘µ¨N¦[›u˜R¨I§¢§¢›R°h¨;=*0+(~3B; £
¿ ­~¡¢ž¨I§¢ºB™#¦4¡¯[­~ª ¡¢ž³_¨Ižb
¨Iž§¢™Bš~ºg¨Iž=[­~›‰ž4›8¨†¦[˜©­Yžbb¦[¡¢š~ºW¡¯žž4­~™#¦4R«±Œ²)¡¯ª¨R»±y›R˜R™Bª›¡¢š~› rÅ
˜R¡¢›9šs³’™#¦§¢™Bš~ºž4›8¨N¦[˜©­Fžbb¦[¡¢š~ºBž·¼>ž4›R› µ)›'¦[˜R¡¢ž4›rÈ ½ £¿ ­~›9¦[›¡¢ž¨kª™#¦[›Ež4™#œV­~¡¢žb[¡¯˜8¨†[›R°‚¨†§¢ºB™#¦[¡¯[­~ª
¼,[­~
› ·+yA.1@?)U J3B7878*,MRU =79&H1@1d&HO -)3B78*>1@?Dj½—[­V¨†
¡¯ž¨†§¯¬¨R»ž³_¨Ižb £
R¤~
¿ ­~›=³’™B§¢§¢™!¬¡¯šVº ¦4™Bº#¦©¨Iª ¡¢ªkœV§¢›Rª›9šs[ž2[­~›e™#±ƒ®ƒ¡¢™B²~ž`¨I§¢ºB™#¦[¡[­~ª £ Ÿ,ª¨†¡¢šs©¨†¡¢š~ž2¬=™‰¨†¦4¦[¨8»ƒž
™B³Š˜©­V¨†¦©¨†˜9[›9¦[ž9«{™Bš~›r³’™#¦u[­~›rž4›8¨†¦4˜‘­‡žb4¦[¡¢š~º)«^¨Iš~°‡™Bš~›r³’™#¦u4­V›r˜R²)¦4¦[›9šs‰¬¡¢š~°~™N¬ £ ›r¡¢ªkœy™Bžb›·¨
˜9»ƒ˜R§¢¡¢˜™#¦[°~›9¦‰™BšF4­V›·¬
¡¢š~°V™!¬w¼,4­V› ~¦[žb‰›R§¯›Rª›Ršs°~¡¯¦4›R˜9[§¯»„³’™B§¢§¢™!¬ž[­~›§’¨Ižb™Bš~›!½^[­~¡¢žª¨†¹›9ž
¡¯›8¨†žb»Ž[™‚ž4­~¡¢³¢[­~›k¬¡¢š~°~™!¬ ™Bš~›œŒ§¢¨I˜R›#«`±ƒ»/žb¡¢ªkœV§¯»F¦4›9œV§’¨I˜R¡¢š~ºY›R§¯›Rª›Ršs ™B³=[­~›4›'µ¬¡[­
›R§¢›9ª›Ršs
¼@¨Iš~°‚¨†
4­V›už[¨Iª›[¡¢ª›‰¨I°)®I¨Iš~˜R¡¢š~ºW[­~›E§¯™BºB¡¢˜8¨I&
§ ~¦[žbœy™Bž4¡¯4i¡¢™Bšh™B³[­~›‰¬¡¢š~°~™N¬
±ƒ»c™Bš~›!½ £ i + m
# include < iostream >
// Program : string_matching. C
// find the first occurrence of a fixed string within the
// input text , and output the text so far
int main ()
{
// search string
char s [] = " bool ";
// determine search string length m
unsigned int m = 0;
for ( char * p = s ; * p != ’\0 ’ ; ++ p ) ++ m;
// cyclic text window of size m
char * t = new char [m ];
unsigned int w = 0; // number of characters read so far
unsigned int i = 0; // index where t logically starts
// find pattern in the text being read from std :: cin
std :: cin > > std :: noskipws ; // don ’t skip whitespaces!
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
std :: cout < < "\ n";
€
`©
R¤H
delete [] t;
return 0;
}
Program 15:
]27939-M^MR1>78*0+.- DF&H14\8?*0+.-mt
«€[­~›œ~¦[™Bº#¦©¨Iª
­ ›9šJ¬=›h¨†œ~œV§¯»j4­V›œ~¦[™Bº#¦©¨Iª [™S[­~›[›'µW™B³
[­~› V§¢›
V
eratosthenes.C
™B²)4œV²)[ž `¦[™Bº#¦©¨†ª 8" ²)œ„[™W4­V› ~¦[žb™ƒ˜R˜9²~¦b¦[›Rš~˜R›d™B³^[­~›užl4¦[¡¢š~º
Ê
"bool"
// 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
à ³’›9¬ ˜R™Bªª›RšH[žEš~›R›R°<4™‚±.›cª¨†°V›k¬
¡¯[­/¦[›Ržbœ.›R˜9[™‚[­~›c­V¨Iš~°~§¢¡¢š~ºY™B³žb©¨Iš~°V¨†¦[°Æ¡¢š)œV²)
­ ›9¦[› £ ¿ ­V›‚œ~¦[™Bº#¦©¨Iª ¦[›R¨I°~žc[­~›‚[›'µƒh˜©­V¨†¦©¨I˜'[›9¦h±s»Q˜‘­V¨†¦[¨I˜9[›9¦…³¢¦[™Bª
~
«²VšH[¡¢§[­~¡¢ž
std::cin
žb4¦4›8¨Iª ±y›9˜R™Bª›Rž b›Rªkœ~» £¿ ™E[›Ržbe[­~¡¢ž9«s¬=›²~ž4›[­~›³_¨I˜'e[­V¨†ežb4¦4›8¨Iª ®I¨I§¢²~›Rže˜8¨†šc¡¯ªkœŒ§¯¡¢˜R¡¯[§»
±y›c˜R™Bšs®›'¦4[›R°5[™
«Š¬
¡¯[­4­V›¦[›Ržb²V§W±y›9¡¢š~º % Y¨IžW§¯™BšVºF¨Ižr[­~›9¦[›…¬¨†žWš~™j¨N4[›Rªkœ~W¨†
¦[›8¨†°V¡¯šVºrœŒ¨Ižb
4­V›ubool
›Rš~°‚™B³p[­~›džbb¦[›8¨Iª £ ƒ¡¯šV˜9›u[­~›u®I¨I§¢²~›u™B³
¡¯ž[­~›džl4¦[›8¨Iª
std::cin >> t[i]
&©ZR14%97·¦[›Rª™!®#¨I§)™B³Œ™Bš~›˜©­V¨†¦©¨I˜'[›9¦8«[­~›˜9™Bšs®›9¦[žb¡¢™Bšg[™
›‘µ~¨I˜94§¯»·[›R§¢§¯ž²~ž¬­~›9[­~›9¦[­~›9¦[›žb[¡¯§¢§
bool
¬¨Iž¨r˜©­V¨†¦©¨†˜9[›9¦¡¢šh[­~›‰žb4¦[›R¨IªY«™#¦šV™# £
h™Bžb—˜9™Bšs®›Rš~¡¢›RšH[§¯»«B[­~›=œV¦4™Bº#¦©¨Iª¶¡¢ž¦[²~šg±ƒ»¦[›9°V¡¦[›R˜9[¡¯šVº‰žb©¨†šV°V¨†¦4°k¡¢š)œV²~`4™E¨ Œ§¯›˜9™Bšs©¨I¡¯š)Å
¡¢š~º·[­~›[›'µ £ Ÿ>šc[­~¡¢že˜8¨Ižb›#«[­~›žb4¦[›8¨†ª
¬¡¯§¢§Œ±y›9˜R™Bª››Rªkœ~»k›'µ)¨I˜9[§¯»c¨Ne[­~›‰›9šV°…™B³
std::cin
[­~› Œ§¯› £¿ ­~›d§¯¡¢š~›
std :: cin > > std :: noskipws ; // don ’t skip whitespaces!
¢¡ žš~›R˜R›9ž4ž[¨†¦4» [™Ž[›9§¢§
[­~›Yžb4¦4›8¨Iª [­V¨†„;?*>14%RMl].&~\9%RM5¼,±V§’¨Iš)¹žR«š~›9¬§¯¡¢š~›RžR«=›9[˜ £ ½ ž4­~™B²~§¢°Qš~™#
±y›S¡¢ºBš~™#¦[›R° ¼,±ƒ»Q°~›R³_¨I²~§¯R«[­~›9»•¨†¦[›8½ £“¿ ­~¡¢žc¨I§¯§¢™N¬
ž²~žc[™Æž4›8¨N¦[˜©­¾³’™#¦hžl4¦[¡¢š~ºBž[­V¨†c˜R™Bšs[¨I¡¢š
¬­~¡¯4›RžbœŒ¨I˜R›Rž9«)¨Iš~°¡¯¨I§¢§¢™!¬ž€²~ž—[™™B²~bœŒ²)—4­V›4›'µ¼>²)œc[™·[­~› ~¦[žb=™ƒ˜9˜R²)¦4¦[›Rš~˜R›™B³y[­~›ž4›8¨†¦4˜‘­
žb4¦4¡¢š~ºH½e¡¯šh¡¯[ž™#¦[¡¢ºB¡¯šŒ¨†§.§’¨R»™B²) £
2.6.11 Multidimensional arrays
Ÿ>š‚ÁÂu·«~¬=›u˜8¨†š„­V¨8®›d¨†¦4¦©¨R»ƒž™B³`¨N¦4¦©¨R»ž £ ´)™#¦
›‘µ~¨IªkœV§¢›#«s[­~›u°~›R˜R§¢¨†¦©¨†[¡¯™Bš
int a [2][3]
° ›R˜R§’¨N¦[›Rž [™±y›Š¨Iš¨†¦4¦[¨8»‰™B³§¯›Rš~º#[­ ¬
­V™Bžb›€›R§¯›Rª›Ršs4žp¨†¦4›—¨†¦4¦[¨8»ƒžp™B³§¯›Rš~º#[­ ¬¡¯[­d²Vš~°~›9¦[§»¡¢š~º
~
a
2
»ƒœy›
¡¢ž¨„
DhA.OX1>*l(*0D‡%R+2M'*b3B+&HO&7879&:J¼>¡¢š‚[­~¡¢ž˜8¨I3ž4›r™B³Š°~¡¢ª›9šVžb¡¢™Bš~ž
£ ›W¨I§¢žb™cž4¨8»‚[­V¨†
¨Iš~° int½ £€¿ ­~›u»sœy›u™B³ ¡¢ž a
«~¨†šV°…[­~›d²~š~°V›'¦[§¯»¡¯šVº·»ƒœ.›d¡¢ž
£ Ÿ>šhºB›Rš~›9¦©¨I§>«
2
3
a
int[2][3] int[3]
[­~›‰°V›9˜R§’¨†¦©¨N[¡¢™Bš
R¤"
"!$#&% ' £¯£¯£ "!$#&% '
°~›Vš~›Rž¨I𠍆¦b¦©¨R»
™B³§¢›9šVº#4­
¼0®#¨I§¯²V›…™B³ "!$#&% s½¬
­V™Bžb›„›R§¢›Rª›9šs[žW¨†¦[›Y¨N¦4¦©¨R»žW™B³§¢›Rš~º#[­
a
n1
¼,®I¨I§¢²~›c™B³ "!#&% ½E¬­~™Bž4›c›R§¢›Rª›9šs[žr¨†¦[› £R£8£ »™B²JºB›9r[­~›œŒ¡¯˜9[²)¦[› £Æ¿ ­V›®I¨I§¢²~›Rž
n2
n1 , . . . , nk
¨†¦[›c˜8¨I§¯§¢›R°4­V›/(*,DF%R+2M9*b3B+2MY™B³[­~›h¨†¦b¦©¨R»«—¨Iš~°<[­~›c›'µœ~¦[›9ž4ž4¡¢™Bš~ž !$#&% I« £9£8£ « "!#&%¾ª
r²~žb±y›
˜R™Bš~žb©¨†šs›'µœ~¦[›Ržbž4¡¢™Bš~ž™B³p¡¢šs[›9º#¦©¨I§.»ƒœy›d¨Iš~°…œy™Bžb¡¯[¡¯®›®I¨I§¢²~› £
¨Iš~°~™Bª ¨†˜R˜R›Rž4ž·¡¯šjªW²~§¯4¡¢°~¡¢ª›Rš~ž4¡¢™BšV¨I§{¨†¦4¦©¨R»ƒžd¬=™#¦4¹žE¨Ižd›'µƒœy›R˜94›R°2Ê a[i] ¡¢žu4­V›W›R§¢›Rª›9šs
™B³¡¢š~°~›'µ «y¨Iš~°‚[­~¡¢ž›R§¢›9ª›Ršs¡¯ž¨IšS¨†¦4¦©¨R»Y¡¯4ž4›R§¢³ £ Áe™Bš~ž4›R¸ƒ²~›RšH[§¯»«
¡¢ž4­V›·›9§¢›Rª›RšH™B³
i
a[i][j]
¡¢š~°~›'µ ¡¢š…[­~›u¨†¦4¦©¨R»
«V¨Iš~°„žb™g™Bš £
à §¯[j­~™B²~ºB­E¬=›e²~ž4²V¨Ia[i]
§¢§¯»‰[­~¡¢š)¹E™B³~ªr²~§¯[¡¢°~¡¢ª›Rš~ž4¡¯™BšŒ¨N§#¨†¦b¦©¨R»ž¨Iž©¨N±Œ§¯›Rž™#¦ª¨†4¦4¡¢˜R›RžR«N[­~›—ª›RªgÅ
™#¦4»/§’¨R»™B²)¡¢ž Œ¨† §¢¡¹›³’™#¦g™Bš~›'Å>°V¡¯ª›Rš~ž4¡¢™BšV¨I§€¨†¦4¦©¨R»ž £ ´)™#¦W›‘µ~¨IªkœV§¢›#«4­V›¬=™ƒ°~¡¢ª›9šVžb¡¢™BšV¨I§
¨†¦4¦[¨8»Æ°~›R˜R§¢¨†¦[›R°<4­~¦4 ™B²VºB­
™ƒ˜9˜R²)œŒ¡¯›Ržg¨‚˜R™BšH[¡¢ºB²~™B²~žrœŒ¨†¦4r™B³
4­V›…ª›Rª™#¦4»«`¬
¡¯[­
žbœŒ¨I˜R›u³’™#¦
™#±ŒÄ–›R˜'int
[ž™B³{a[2][3]
–»sœy›
«~ž4›R›d´p¡¢ºB²)¦[› £
6=2
3
a[0][0]
int
a[0][1]
a[0][2]
a[1][0]
a[0]
Figure 10:
a[1][1]
a[1][2]
a[1]
J%RDF3B78:SO_&:V3BA.1‰3[Zk&Y1>;3I(*,DF%R+2M9*l3B+&HO—&7879&:
h²~§¯[¡¢°~¡¢ª›Rš~ž4¡¯™BšŒ¨†§¨†¦4¦[¨8»ƒž—˜8¨Iš±y›
¡¢š~¡¯[¡’¨I§¯¡
R›R°¡¢š¨u¬¨R»Wž4¡¢ª¡¢§¢¨†¦`[™E™Bš~›R°~¡¢ª›Rš~ž4¡¯™BšŒ¨†§~¨†¦4¦©¨R»ž [­~›®#¨I§¯²V›‰³’™#¦
4­V›:e7!MR1u¼@¨Iš~°3B+2OP:Y[­~› ~¦[žl‘½=°~¡¢ª›9šVžb¡¢™Bšª¨8»±.›u™Bª¡¯b[›R°2Ê
int a [][3] = { {2 ,4 ,6} , {1 ,3 ,5} };
¬­~›9¦[›
¡¯ž²~ž4›9°h[™r¡¢š~¡¯[¡’¨I§¯¡
R›4­V››R§¯›Rª›Ršs
¿ ­V¡¯ž°~›Vš~›Rž¨Iš„¨N¦4¦©¨R»™B³{»ƒœ.›
int[2][3]
{2,4,6}
«V¨Iš~°
¡¢ž=²~ž4›R°Y³’™#¦
£
a[0]
{1,3,5}
a[1]
¿ ­~›W¦[›R¸s²~¡¯¦[›R°Ž°~¡¢ª›Rš~ž4¡¯™BšVž™B³—¨…ªr²V§[¡¢°~¡¢ª›RšÅ
ž4¡¢™BšV¨I§ƒ¨†¦4¦©¨R»·ª¨R»dšV™#`±.›—¹š~™N¬
šg¨N`˜R™BªkœV¡¢§¢›[¡¢ª›Š¡¯š¬
­~¡¢˜©­r˜R¨Iž4›=°)»šV¨Iª¡¢˜Š¨I§¢§¢™s˜8¨†[¡¢™Bšd¡¢ž˜8¨I§¯§¢›R°
³’™#¦ £ É2›9²~žžl©¨†¦4¬
¡¯[­„[­~›E˜R¨Iž4›E¬­~›9¦4›·¨I§¢§{°V¡¯ª›Rš~ž4¡¢™Bš~ž±V²)
4­V› ~¦[žl¨†¦[›d¹ƒš~™N¬
šF¨N˜R™BªkœV¡¢§¢›
[¡¢ª› £ Ÿ>³ "!#&%…­V¨Iž‰®#¨†§¢²~›
«p¨cœy™B¡¯šs[›9¦‰[™Y¨°)»šV¨Iª¡¢˜R¨I§¢§¯»‚¨†§¢§¢™ƒ˜R¨†[›R°F¨†¦4¦©¨R»F™B³e§¢›Rš~º#[­
n
¬¡[­h²~š~°~›9¦[§¯»ƒ¡¢š~º»sœy› n ' ££¯£ 0 '^¡¢ž™#±V[¨I¡¢š~›R°c³¢¦[™Bª ¨
›'µƒœV¦4›Rž4ž4¡¢™Bš
Dynamic allocation of multidimensional arrays.
new
n2
"!#*%' "!$#&% ' £¯£¯£ !$#&% '
nk
new
¬­~›9¦4› "!$#&%
­Œ¨†žd®#¨†§¢²~›
«
£ à §¯§€°~¡¢ª›Rš~ž4¡¯™BšVž±V²)E[­~›~¦[žbdªW²~žbu±y›k˜R™Bš~žb©¨†šs
ni i = 1, . . . , k
›'µƒœV¦4›Rž4ž4¡¢™Bš~ž £ Ÿ>³»™B²S[­~¡¢š)¹‚¨†±y™B²)¡³’™#¦d¨ª¡¢šs²)[›#«Œ4­V¡¯ž¡¢žš~™#ž4²)¦4œ~¦[¡¢ž4¡¢š~º £ ´)™#¦›'µ~¨IªkœV§¢›I«.¡¢š
™#¦[°~›9¦2[™ºB›Rš~›9¦©¨†4›€ª¨I˜©­~¡¢š~›`§’¨Iš~ºB²V¨IºB›˜9™ƒ°~›€³’™#¦^¦©¨Iš~°~™Bª ¨I˜R˜9›Rž4žp™#œ.›9¦©¨†[¡¯™BšVžC™Bšd[­~›°~»ƒšV¨Iª¡¢˜8¨I§¯§¯»
¨I§¢§¯™ƒ˜8¨†4›R°¨†¦4¦©¨R»«H[­~›˜R™BªkœV¡¢§¢›9¦€ªW²~žbŠ¹š~™N¬­~™N¬ª¨Išs»gª›Rª™#¦4»r˜R›R§¢§¯že¨Ež4¡¢š~ºB§¢››9§¢›Rª›RšH—™B³y[­~›
²~š~°V›'¦[§¯»¡¯šVº·»ƒœ.› ' £¯££ '^™ƒ˜R˜9²~œV¡¢›9ž‰¼,ž4›R›d ƒ›R˜9[¡¢™Bš ƒ£ È £¥" ½ £ ²~=[­~¡¢ž=¡¢ž=™Bš~§¯»kœ.™Bž4ž4¡¯±V§¢›¡¢³2[­~›
n2 nk
®I¨I§¢²~›Rž
« £R£8£ «
¨†¦[›
¹š~™!¬šY¨N
˜R™BªkœV¡¢§¯›
[¡¢ª› £
n2
nk
€
`©
R¤B¤
>Ÿ ³¬=›h¬¨IšHk[™/²~ž4›„[­~›‚¨†±y™!®›
›‘µœ~¦[›Rž4žb¡¢™BšQ4™Æ¡¯šV¡[¡’¨I§¢¡ R›c¨Fœy™B¡¢šH[›9¦
new
®I¨†¦[¡’¨†±V§¢›¼0¬¡¯[­Y[­~›r¨I°~°)¦[›Rž4ž‰™B³[­~›~¦[žb›9§¢›Rª›RšH™B³€[­~›ªW²~§¯4¡¢°~¡¢ª›Rš~ž4¡¢™BšV¨I§y¨N¦4¦©¨R»~½'«.¬=›rš~›R›R°
[­~›…»sœy› lœy™B¡¢šH[›9¦r[™ ' £¯££ ' £ à žr»™B² ª¨8»Æž4²~žbœ.›R˜98«—¬=›„¡¯šV³’™#¦4ª¨I§¢§¯»‡˜8¨I§¢§=[­~¡¢žW»sœy›
n
n ' £¯££ ' «y±V²)‰¬=›˜8¨†2š^Ç ¬
¦[k¡¯4›·¡¯§¢¡¯¹›·[­V¨†¡¢šjÁ‰·«{ž4¡¯šV˜9› ' ££¯£ '¡¢žš~™#u¨»sœy›
n2 nk šV¨Iª› £ à º¨I¡¢š2«~¬=›·­V¨8®›E4™k¦[›Rž4™#¦4
[™¨Iš‚¡¢š~°~¡¯¦[›R˜9
°~› VšV¡[¡¢™Bš„™B³`[­~›·°~n›Rž42¡¯¦4›R°Ynœyk ™B¡¢šs4›9¦
®I¨†¦[¡’¨N±Œ§¯›
«V¨Iž¡¢šh[­~›‰³’™B§¢§¢™!¬¡¢š~º·˜R™s°V›‰³¢¦©¨IºBª›9šs £
Pointers to arrays.
p
int n = 2;
int (* p )[3] = new int [ n ][3];
// type of * p : int [3] <= > p : int [3]*
¼,¬
­~¡¢˜©­u¡¢ž2[­~›ž[¨Iª›¨Iž
½
¿ ­~›œŒ¨†¦[›RšH[­~›Rž4›Ržp¨†¦[›šV›9˜R›Rž4ž[¨N¦4»d­~›9¦4›#«Iž4¡¯šV˜9›
int *p[3]
int* p[3]
°~›R˜R§’¨N¦[›Rž
[™±y›W¨Išj¨N¦4¦©¨R»S™B³œy™B¡¯šs[›9¦4ž4™
¼>ž4›9›g¨I§¯ž4™šV›‘µ‰œC¨N¦©¨Iº#¦©¨†œV­Œ½ £ Á‰ žb»šH©¨NµS¡¢ž
int
±V¡¯4[›'¦[žb¬=›Rp›9 £
Ÿ>³—»™B²2Ç ¦[›¨†žb¹¡¢š~º…³’™#¦¨hªr²V§[¡¢°~¡¢ª›Rš~ž4¡¢™BšV¨N§p¨†¦b¦©¨R»‡¬¡[­jš~™BšÅ@˜R™Bš~žb©¨†šsE°~¡Å
ª›Rš~ž4¡¢™Bš~že¨†ª™BšVº
«[­~›™ g˜R¡’¨I§y¨†šVžl¬=›9¦=¡¢žRʝ[­~›9¦4›‰¡¯žešV™Bš~› £ ²)=²~š~°V›'¦e[­~›˜R™B²~šs[›9¦R«
2 , . . . , nk
»™B²„˜8¨†šh±V²~»h¨E®›9¦4n»…
ºB™ƒ™s°„¡¢ª¡¯©¨N[¡¢™Bš £
š~› ~¦[žbrž4™B§¢²)[¡¢™BšŽ[­V¨†žb²VºBºB›9žb[žr¡¯[ž4›R§¯³=¬
­~›Rš»™B²Æ¦[›R˜R™Bš~ž4¡¢°~›9¦[­~› Œ¨†ª›Rª™#¦4»‡§’¨R»™B²)
™B³Šªr²~§¯[¡¢°~¡¢ª›9šVžb¡¢™BšV¨I§2¨†¦4¦©¨R»ƒžu¡¢ž[­~¡¢ž9Ê»™B²j°)»šV¨Iª¡¢˜8¨†§¢§¯»h¨I§¢§¢™s˜8¨†[›¨™Bš~›R°~¡¢ª›Rš~ž4¡¢™BšV¨I§p¨†¦4¦©¨R»S™B³
§¢›Rš~º#[­
¨Iš~°‚¨†¦44¡ V˜R¡’¨I§¢§»gœŒ¨†¦4[¡[¡¢™Bšh¡
¡¢šH[™gžb²~±Œ¨†¦b¦©¨R»ž
±s»h°~™B¡¢š~ºgžb™Bª›
nk
n = n 1 n2 ˲~ºBºB§¢¡¢š~º·¬¡¯[­c¡¢š~°~¡¢˜R›Rž £
É^›'e²~že°V¡¯ž4˜R²~ž4ž—[­~›
¬=™ƒ°~¡¢ª›9šVžb¡¢™BšV¨I§)˜8¨Iž4›™Bš~§¯»r[™¨R®™B¡¢°§¢›Rš~º#[­H»g³’™#¦4ªW²~§’¨I› £ à ¬=™ƒ°~¡¢ª›RšÅ
¨Iš~°
˜8¨Išj±y›gž4¡¢ªr²V§¢¨†[›R°S±ƒ»‡¨h™Bš~›R°~¡¢ª›Rš~ž4¡¢™BšV¨I§`¨N¦4¦©¨R»j™B³
ž4¡¢™BšV¨I§€¨†¦4¦[¨8»S¬¡[­j°~¡¢ª›Rš~ž4¡¢™Bš~ž
n
m
§¢›Rš~º#[­
¨Iš~°
£€¿ ­~››9§¢›Rª›RšHŠ¬¡[­§¢™BºB¡¢˜8¨†§V¡¯šV°~¡¢˜9›Rž
nm
. . . , n − 1}
j {0, 1, . . . , m − 1}
¨†œ~œy›8¨N¦[ž
¨N
¡¢š~°~›'µ
¡¢š…[­~›‰™Bš~›R°~¡¢ª›Rš~ž4¡¢™BšV¨Ii §y¨N¦4{0,
¦©¨R» 1,
£ ¡¢˜R›®›9¦[ž[¨s«V[­~›‰›R§¢›Rª›9šs™B³¡¢š~°~›'µ
mi + j
`
¡¢šc[­~›‰™Bš~›R°~¡¢ª›9šVžb¡¢™BšV¨I§.¨†¦b¦©¨R»­Œ¨†ž§¯™BºB¡¢˜8¨I§.¡¯šV°~¡¢˜9›Rž
°~¡¯®
¨Iš~°
ª™s°
£Š¿ ­~¡¢že¬=™#¦4¹ž
i=`
m
j=`
m
±y›R˜R¨I²~ž4›u[­~›‰³’²~šV˜'[¡¢™Bš
Arrays of pointers.
(i, j) → mi + j
±V¡¥Ä–›R˜9[¡®›R§¯»…ª¨†œVž[­~›Ež4›'™B³§¢™BºB¡¢˜8¨I§2¡¢š~°~¡¢˜R›9ž
[™g[­~›Ežb›9™B³šƒ²~ªr±.›9¦[ž
£
(i, j)
{0, 1, . . . , nm − 1}
Ÿ>šs4²V¡[¡¯®›R§¯»«![­~¡¢ž{ª¨†œ~œŒ¡¯šVº Œ¨†4[›9šVž{[­~›—¡¢ª¨IºB¡¢šV¨†¦b»©¨†±V§¢›€™B³ ¦4™N¬
ž`¨Iš~°
˜R™B§¢²~ªš~ž^±s»·ž4¡¢ªkœV§¯»
œV²)4[¡¢š~ºj™Bš~›h¦[™!¬ˆ¨†³¢[›9¦¨Iš~™#[­~›9¦ £ à žg»™B²Q˜8¨Iš ž4›9›Y³¢¦[™Bª n´p¡¢ºB²)¦[› «=m
4­V¡¯žg¡¢žk›‘µ~¨I˜94§¯»<¬
­Œ¨N
[­~›r˜R™BªkœV¡¢§¢›9¦¡¯žu¡¢ªkœV§¢¡¯˜R¡¯[§¯»c°~™B¡¢š~º³’™#¦Eªr²~§¯[¡¢°~¡¢ª›Rš~ž4¡¯™BšŒ¨N§2¨†¦4¦©¨R»ƒžu¬¡[­Q\'3B+2MR1b&+21·°~¡¢ª›Rš~ž4¡¢™Bš~ž
£
n1 , . . . , n k
™B¡¢š~º¡¯›'µƒœŒ§¯¡¢˜R¡¯[§»…³’™#¦‰š~™BšÅ@˜R™Bš~žb[¨Išs°~¡¢ª›9šVžb¡¢™Bš~ž
¡¢ž™Bš~§¯»Y¨W¬=™#¦4¹I¨†¦[™B²~š~°^«Œ[­~™B²VºB­2«.žb¡¢š~˜R›
^ª™#¦[›R™!®›9¦8«y[­~¡¢ž¬=™#¦4¹I¨†¦[™B²~š~°F±y›R˜9™Bª›Rž›9®›Ršjª™#¦[›
¬=›r§¢™Bž4›·[­~›W¡¯šs[²~¡¯[¡®›Eš~™#©¨†[¡¢™Bš
˜R²~ª±y›9¦[ž4™Bª›¬
¡¯[­…­V¡¯ºB­V›'¦[°~¡¢ª›Rš~a[i][j]
ž4¡¢™BšV¨I§Œ¨†¦4¦©¨R»ƒž £
à ±y›944›9¦ž4™B§¢²)[¡¢™Bš[­V¨†¹›R›9œVž[­~›Yš~™#©¨†[¡¢™Bš
¨†šV° [­V¨†žbª™ƒ™#[­~§¯»Æ›'µƒ[›Rš~°~žk[™
a[i][j]
­~¡¢ºB­~›9¦°~¡¢ª›9šVžb¡¢™Bš~ž¡¯ž
[­~›d³’™B§¢§¯™N¬
¡¢š~º…¼@¨†º¨I¡¢š2«)¬=›E™Bš~§¯»h°~¡¢žb˜R²~ž4ž
[­~›E˜8¨†ž4›E™B³¨W¬=™ƒ°~¡¢ª›9šVžb¡¢™BšV¨I§
¨†¦4¦[¨8»‚¬
¡¯[­‡°~¡¢ª›9šVžb¡¢™Bš~ž
¨Iš~°
½'Ê»™B² V¦4žbd°)»ƒšŒ¨†ª¡¢˜8¨I§¢§»Y¨I§¢§¯™ƒ˜8¨†4›·™BšV›g¨†¦4¦©¨R»S™B³
].3B*,+21@U
n
m
n
%R7!MR«€¨Iš~°/[­~›Rš»™B²§¢›9›9®›9¦b»<ž4¡¯šVºB§¯›gœy™B¡¢šH[›9¦·œy™B¡¢šH·[™Y[­~› V¦4žbr›R§¢›Rª›RšH·™B³¨Iš<¡¢š~°~¡¯®ƒ¡¢°~²Œ¨†§>«
°)»šV¨Iª¡¢˜R¨I§¢§¯»/¨†§¢§¢™ƒ˜R¨†[›R°5¨N¦4¦©¨R»J™B³§¢›9šVº#4­
£•¿ ­V›h³’™B§¢§¢™!¬¡¢š~º‡˜9™ƒ°~›„³¢¦©¨IºBª›9šsW°V›9ª™BšVžl4¦©¨†[›9ž
m
[­~¡¢ž £
R¤
// 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 ];
¡¢ž lœ.™B¡¢šs[›'¦€[™uœy™B¡¢šs4›9¦€4™
¡¢ž[­~›9¦[›R³’™#¦[›¨‰œy™B¡¢šH[›9¦[™
¼>ž4›9›
¿ ­~›
»sœy›
£
int**
[­~›œŒ¨†¦[¨Iº#¦©¨†œV­k
™Bšgœ.™B¡¢šs[›'¦Šž4²)±Vž4˜9¦4¡¯œ~[¡¢š~ºd¡¢š ƒ›R˜9int
[¡¢™Bš ƒ£a[i]
È £ ½'«H¨Iš~°
¡¢ž—¨Iš§®#¨I§¯²V›int
™B³C»ƒœ.›
a[i][j]
«Ä–²~žb§¢¡¯¹›¡¢šh¨ l¦[›9ºB²V§¢¨†¦ –¬=™s°~¡¢ª›Rš~ž4¡¢™BšV¨I§C¨†¦4¦©¨R» £
int
¿ ­~›ª›Rª™#¦b»F§¢¨8»™B²)·¡¯žE°~¡ ›9¦4›Ršs8«{[­~™B²VºB­2Êr´p¡¢ºB²)¦[› ¡¯žd¦[›9œV§’¨I˜9›R°Ž±ƒ»/´p¡¯ºB²~¦4› B#£Y¿ ­V¡¯ž
ª›8¨Iš~žR«Œ[­~›¬=™s°V¡¯ª›Rš~ž4¡¢™BšV¨I§{¨†¦4¦©¨R»‚¡¢žœŒ¨†[˜©­~›R°F²~œ‡³¢¦[™Bª ¨ž4›9‰™B³
™BšV›9°V¡¯ª›Rš~ž4¡¢™BšV¨I§{¨†¦4¦©¨R»ž9«
n
±V²)d[­~›Rž4›
¨†¦b¦©¨R»ž·¨†¦4›kš~™#Eš~›R˜R›Ržbž[¨†¦[¡¢§»j˜R™Bš~ž4›R˜9²~4¡¯®›R§¯»‡¨†¦4¦©¨†šVºB›9°Æ¡¯šŽª›Rª™#¦4» £ Ÿ>š/³_¨I˜9R«p[­~›
¨†¦4¦©¨R»ƒžªn¨R»h›9®›9šF­V¨R®›E°~¡ ›'¦[›Ršs§¢›Rš~º#[­~ž £¿ ­~¡¢ž¡¢ž²~ž4›R³’²~§³’™#¦›‘µ~¨IªkœV§¢›¬­~›RšY»™B²Y¬¨Išs[™
n
žb[™#¦4›g¨§¢™!¬=›9¦bÅ,4¦[¡’¨Iš~ºB²~§’¨†¦
ª¨†4¦[¡Xµ y¡¢š‚[­~¡¢ž˜8¨Iž4›I«^¡užb² g˜R›Ržu¡¢³4­V›·¦[™!¬“™B³Š¡¯šV°~›'µ
­V¨Iž§¢›Rš~º#[­
i
£
i+1
a[0]
Figure 11:
a[1]
a[1][0] a[1][1] a[1][2]
a[0][0] a[0][1] a[0][2]
J%RD‡3B78:kO_&:V3BA.1e3[Zd&W1>;3I(*,DF%R+2M9*l3B+&HO{&7879&:k79%'&HOP*s%‘(hT8:c&+Æ&7879&:h3[Z€]y3B*0+214%R7!M
É^›'=²Vže˜9™BšV˜9§¢²~°V›4­V¡¯žež4›R˜9[¡¯™Bšc¬
¡¯[­c¨Išc¡¢šs[›'¦[›Ržb[¡¯šVº¨NœVœV§¢¡¯˜8¨†[¡¢™Bšg™B³
>¼ ªr²~§¯[¡¢°~¡¢ª›Rš~ž4¡¯™BšŒ¨N§_½—¨†¦4¦[¨8»ƒž £ Ÿ>ª¨IºB¡¢š~›·¨¦[›R˜9©¨†šVºB²~§’¨N¦³_¨I˜9[™#¦4» V™ƒ™#¦R«^žb²~±.°V¡®¡¢°~›R°F¡¢šs[™cž4¸s²Œ¨N¦[›
˜R›R§¯§¢ž £ ƒ™Bª›™B³^4­V›˜R›9§¢§¢ž=¨†¦[›±V§¢™s˜©¹›9°…¬¡[­™#±Œžl©¨I˜R§¢›9ž¼,[­~›Rž4›˜R™B²~§¢°…³’™#¦›‘µ~¨IªkœV§¢›
±.›‰ª¨†˜‘­~¡¢š~›Rž
™#¦˜R²)œ~±y™¨†¦[°~žR«±V²)·§¢›'²Vž¨N±Œžl4¦©¨I˜94§¯»j˜8¨†§¢§€[­~›Rª l¬¨I§¢§¢ž ½ £ à ¦[™#±y™#E¡¢žE¡¢š~¡¯[¡¢¨I§¢§¯»‚§¢™s˜8¨†[›9°¨N
ž4™Bª›k˜9›R§¢§
¼,[­~›ž4™B²)¦[˜R›8½'«¨Iš~°/4­V›ºB™¨I§€¡¢žE[™‚ª™!®›g[­~ ›k¦[™#±y™#E4™Sžb™Bª›k™#[­~›9¦˜R›R§¯§
¼,[­~›
S
T
©¨†¦4ºB›9‘½ £ à ·¨IšH»‡[¡¯ª›#«^4­V›r¦[™#±y™#d˜8¨Iš/ª¨†¹›g™Bš~›Wžb[›9œÆ³¢¦[™Bª ¡[žd˜R²)¦4¦4›Ršs·˜9›R§¢§€4™Y¨Išs»‡™B³—[­~›
³’™B²)¦¨†°Äl¨I˜9›Ršs˜R›R§¢§¯žR«)±Œ²)³’™#¦™#±s®¡¢™B²~že¦[›8¨†ž4™Bš~ž
¡¯ª¨R»™Bš~§¯»²~ž4›d˜R›9§¢§¢že[­V¨†
¨†¦[›‰›Rªkœ~–» £
¡¯®›9š…[­~¡¢žež4›'[²)œ{«¬=›¬¨IšHe[™ Œš~°…¨·ž4­~™#¦4[›Ržb=œy™Bžbž4¡¯±V§¢›
¦[™#±.™#eœC¨N[­…³¢¦4™Bª
[™
¼>™#¦ Œš~°
S
T
™B²)[­V¨†š~™…ž4²~˜©­FœŒ¨†4­‡›'µ¡¢žb[ž©½ £ (
›9¦4›#«y[­~›r§¯›Rš~º#[­F™B³€¨k¦[™#±y™#œŒ¨†[­F¡¢ž[­~›šƒ²~ª±y›9¦™B³žb[›9œVž
©¨†¹›9šF±ƒ»‚[­~›¦[™#±y™#°~²)¦[¡¢š~º¡¯[žª™#[¡¢™Bš‚³¢¦[™Bª
[™
¼,[­~›¡¢š~¡¯[¡¢¨I§p˜R›9§¢§ °~™ƒ›9žuš~™#‰˜R™B²~šs ^¡¢š
S
T
œŒ¨†¦4[¡¯˜R²~§’¨†¦8«Œ¡¯©¨†¹›9ž
žb4›9œVž4™¦4›8¨I˜©­
³¢¦[™Bª
½ £ ´p¡¢ºB²)¦[› ! ¼>§¢›R³¢©½
ž4­~™NS¬
žu¨†šF›'µ)¨IªkœV§¢›d¬
¡¯[­
0
S
S
˜R›R§¢§¢ž £
8 12
Ÿ>š„[­~¡¢ž
›‘µ~¨IªkœV§¢›#«~¨r§¢¡¯44§¢›[­~¡¢š)¹¡¢š~º¦[›9®›8¨†§¢ž
[­V¨†[­~›9¦[›d¨†¦[›E›Ržbž4›Ršs4¡’¨I§¢§¯»¬=™k°~¡ ›9¦[›RšH
œy™Bž–Å
ž4¡¯±V¡¢§¯¡¯[¡¢›RžŠ³’™#¦
[­~›u¦4™#±y™#4™W¦[›8¨†˜‘­ ʗ¡¯˜8¨Iš„œŒ¨Iž4ž±y›R§¢™!¬L[­~›d˜9™Bªkœy™Bš~›Ršs™B³p¬¨I§¯§¢ž¨I°BÄb¨†˜R›Ršs[™
«.™#¦‰¨†±y™!®› £ Ÿ,4²~¦4šVž™B²)[­V¨†
œCT¨†ž4ž4¡¢š~º¨†±y™!®›·¡¢ž³_¨†žb[›9¦8«2¨†šV°F¨W¦[›9ž4²~§¯[¡¢š~ºž4­~™#¦4[›9žbœŒ¨†[­/¼>™B³
S
§¢›Rš~º#[­
½¡¢žd°~›9œV¡¢˜94›R°j¡¢šŽ´{¡¢ºB²)¦[› ! ¼,¦[¡¢ºB­H‘½ £ ™#[›[­V¨†u¡¢š‡ºB›Rš~›9¦[¨I§4­V›'¦[›g¡¢ž‰š~™#E¨c²~šV¡¯¸ƒ²~›
21
ž4­~™#¦4[›9žb€
œŒ¨†4­ £ Ÿ>šg™B²)¦›'µ~¨IªkœV§¢›I«#[­~› VšV¨I§¦[¡¯ºB­s`[²)¦[šW™B³Œ[­~›eœŒ¨†[­g˜9™B²V§¯°k¨I§¢žb™‰­V¨R®›=±y›R›Rškª¨†°V›
™Bš~›u™#¦¬=™g˜R›9§¢§¢ž=³’²)¦4[­~›9¦°~™!¬š £
Computing shortest paths.
€
`©
R¤ È
S Figure 12: E
"!"! "!
"!! "!! "!!
"""
T
A B
A BA
B
A B
A BA
B
AD
BA
B
C BADC
DC
C DC
DC
D
C DC
DCD
- .
- &
% .- &
% &
% &% $
# $
# $#
.
- .
- &
% .- &
% &
% &% $
# $
# $#
.
- &
% .- &
% &
% &% '
.-.
$#('
$#('$#(
'
'
')(
(
)
)(
*
'
'(
S (
) *
) *'(*)
*
*
)) ,
)) ,+*))
+*
+*
,
*
+ *
+ *,+
,
++ ,
++ ,++
,
,
,
/ ,
/ ,0/
0
/ 0
/ 0/
0
0
/
10 /
10 /210
2
1 2
1 21
2
1 2
1 21
2
2
%>ZR1GFY”j?C&H1
*>Mk&„MR?.3B7!14%8MR1
793TR31€]C&H1@?gZ97R3BD
S
143
TH
; <
; >
= <; >
= >
= >= @
? @
? @?
<
; <
; >
= <; >
= >
= >= @
? @
? @?
<
;:
== <;:9; >
== >
== >== @
?? @
?? @??
<;:9
<
>
9<
;
<;
>
<
>
>
>
@
@@
9 :
9 :9
:
9
9
:9
:
:
98
:9
7 :
7 :987
8
7 87
87
8
7
8657
86
5 7865
5 65
65
6
T
54
6543
3 6543
6
3
3
34
4
4
3
43
434
$*0-B?)1GFhx€?*>M3B+`%JI
[ ­V¨†Œš~°~ž‰¨kž4­~™#¦4[›Ržl¦[™#±y™#œŒ¨†[­2«.ºB¡¯®›9šS[­~›°~¡¢ª›Rš~ž4¡¢™Bš~ž
¼,šƒ²~ªr±.›9¦™B³¦4™N¬
ž©½E¨Iš~°
¼>šƒ²~ª±y›9¦™B³˜R™B§¢²~ªš~ž©½‰™B³[­~›³_¨I˜9[™#¦b» V™s™#¦8«[­~›˜R™ƒ™#¦[°~¡¢šV¨†4›Rž
n
™B³ž4™B²)¦[˜R›r¨Iš~°‚©¨†¦[ºB›9R«y¨Iš~°Sm
4­V›E¬¨†§¢§¢ž £ (™N¬˜8¨Iš‚[­~¡¢ž±y›·°~™Bš~›!Î ›R³’™#¦[›·¦[›8¨†°V¡¯šVº³’²)¦44­V›'¦8«.¬=›
›Rš~˜R™B²)¦©¨IºB›»™B²[™E[­~¡¢š)¹k¨†±y™B²)—[­~¡¢žŠœ~¦[™#±V§¢›9ª ³’™#¦¨d¬­~¡¢§¯› £ §¢›8¨Iž4›š~™#[›[­V¨†—[­~›gT878AC14%8UZ†3B7R\9%
&8])]27R3I&~\R?Q™B³=4¦4»ƒ¡¢š~º‚¨I§¢§Šœ.™Bž4ž4¡¯±V§¢›gœŒ¨†4­Vž¨†šV°Æž4›R§¯›R˜9[¡¢š~º„[­~›ž4­~™#¦4[›9žb™Bš~›c¡¯ž·šV™#r¨†š™#œ~[¡¢™Bš2«
ž4¡¢š~˜R›e[­~›ešs²Vª±y›9¦™B³Vž4²~˜©­WœŒ¨†[­~ž¡¢ž`ž4¡¯ªkœŒ§»u[™s™§’¨†¦[ºB›=¨I§¦[›8¨I°)»E³’™#¦ª™s°V›'¦©¨†[› V™s™#¦°V¡¯ª›Rš~ž4¡¢™Bš~ž £
¼ ›Ržb¡¢°~›RžR«~­~™N¬ °~™W»™B²„›'®›RšYºB›Rš~›9¦©¨†4›d¨I§¯§.[­~›Rž4›uœŒ¨†4­Vž[Ά½
(
›9¦[›Y¡¯ž¨I𕍆œ~œV¦4™¨I˜©­ ±Œ¨Ižb›R°•™Bš6(:H+&Dh*l\„]27R39-B79&D…Dh*0+.- £ ¿ ­~¡¢žkºB›9šV›'¦©¨I§
[›9˜‘­~š~¡¢¸s²V›h¡¢ž
¨†œ~œV§¢¡¢˜8¨N±Œ§¯›W[™Yœ~¦[™#±V§¢›Rªž‰¬­~™Bž4›ž4™B§¢²)[¡¯™BšVžd˜8¨IšÆ¸ƒ²~¡¢˜[¹§¯»‡±y›™#±~©¨I¡¢š~›R°/³¢¦[™Bª [­~›ž4™B§¢²)[¡¯™BšVž‰[™
ž4ª¨I§¯§¢›9¦=ž4²)±~œ~¦[™#±V§¢›Rªž=™B³p[­~›‰ž[¨Iª›‰žb4¦[²~˜9[²)¦[› £—¿ ­V›d¨†¦4¡¢š„°)»šV¨Iª¡¯˜œV¦4™Bº#¦©¨Iªª¡¢š~ºE¡¢ž=[
™ Vš~°
[­~› l¦[¡¢ºB­H ž4²)±~œ~¦[™#±V§¢›RªžR«s¨Iš~°[­~¡¢ž—ª¨R»r¦[›R¸ƒ²~¡¯¦4›¨dª™#¦[›™#¦e§¯›Rž4že³_¨†¦bÅ,¦[›8¨I˜©­~¡¢š~ººB›Rš~›9¦©¨I§¯
¡ 8¨†[¡¯™Bš
™B³{4­V›u™#¦[¡¢ºB ¡¢šV¨I§ŒœV¦4™#±Œ§¯›Rª £
š~˜R›„¬=›h­Œ¨R®›Y¡¢°~›RšH[¡ V›R°Jžb²V¡©¨†±V§¢›cž4²)±Vœ~¦[™#±V§¢›9ªžR«Š¬=›hžb™B§¯®›Y¨I§¢§™B³[­~›Rª ¡¯šJ[²)¦[š2«e³¢¦[™Bª
[­~›rž4ª¨I§¢§¢›'¦[™…4­V›r§’¨†¦4ºB›9¦‰™BšV›9žR«p¨†šV°‡ª›Rª™#¦[
¡ R›u[­~›Wž4™B§¯²~4¡¢™Bš~ž £¿ ­V¨†¬¨R»«y¬=›W­V¨R®›k¨†§¢§[­~›
¡¢š~³’™#¦[ª¨†4¡¢™Bšd[­V¨†`¬=›=š~›R›R°W¡¢šW™#¦4°V›'¦4™‰¸s²~¡¢˜[¹§¯»·˜9™BªkœŒ²)[›€[­~›žb™B§¢²)[¡¢™Bš·[™‰¨ºB¡¯®›Ršrž4²)±Vœ~¦[™#±V§¢›9ª
³¢¦[™Bª [­~›užb™B§¢²)[¡¢™Bš~ž=™B³{[­~›r¼@¨I§¯¦[›R¨I°)»ž4™B§¯®›R°Œ½ež4ª¨I§¢§¢›'¦=ž4²)±Vœ~¦[™#±V§¢›9ªž £
Ÿ>šY™B²)¦
˜8¨†ž4›#«~¬=›dºB›Rš~›9¦©¨†§¢
¡ R›[­~›‰œ~¦[™#±V§¢›9ªÍ¨†ž
³’™B§¢§¢™!¬ž9ʳ’™#¦r&HO,O`›Rªkœ~»c˜R›R§¢§¯ž
™Bš„4­V› V™ƒ™#¦8«
C
˜R™BªkœV²)[›=[­~›dO_%R+.-1@?Y™B³y¨‰ž4­~™#¦4[›Ržb€œŒ¨†[­³¢¦[™Bª
[™
¼,¬
­~›9¦[›4­V›®#¨†§¢²~›
¡¢ž
¡¢³.š~™Ežb²V˜©­œŒ¨†[­
›'µ¡¢žb[ž©½ £ ›
˜9§’¨I¡¢ª¶[­V¨†[­~¡¢ž€¨I§¢ž4™už4™B§¯®›Rž—™B²)¦€™#¦[S¡¢ºB¡¢šV¨IC§œ~¦[™#±V§¢›9ª ™B³.˜9™BªkœŒ²)[¡¯šV∞º‰¨‰ž4­~™#¦4[›Ržb€œŒ¨†[­
³¢¦[™Bª
4™ Ê Ã žbž4²~ª›4­Œ¨Ne[­~›‰§¯›Rš~º#[­…™B³p¨·ž4­~™#¦4[›Ržb=œŒ¨†[­…³¢¦[™Bª
[™
¡¢ž
¼>™#[­~›9¦4¬
¡¢ž4›
S
¬=›d¹ƒšVS™!¬ ¦[T¡¢ºB­s
¨R¬¨R»h[­V¨†[­~›9¦[›d¡¯ž
š~™kœŒ¨†[­‚¨†¨I§¢§_½ £ ›·¨I§¯ž4™gž[¨R»…
[­V¨†T
¡¯`žu<7R%‘∞
&~\8?C&)T!O_%³¢¦[™Bª
T
¡¢š žl[›9œVž £
S
`
™!¬ ¡¢³ T =K S «^[­~›9¦[›kªr²~žb‰±y›k¨c˜R›R§¢§Š¨I°BÄb¨†˜R›Ršsu[™ T [­V¨†d¡¯žu¦[›8¨†˜‘­V¨†±V§¢›W³¢¦[™Bª S ¡¯š ` − 1
žb[›'œŒž9«.¨Iš~°‚¨I°BÄl¨I˜R›RšH[™g4­V¡¯ž¨W˜9›R§¢§{¦4›8¨I˜©­V¨†±V§¢›d¡¢š
žb[›9œVž›94˜ £ ´)™B§¢§¯™N¬
¡¢š~ºržb²V˜©­S¨g˜©­V¨I¡¢šY™B³
2
˜R›R§¯§¢ž²~šH[¡¢§.¬=›‰ºB›94™
ºB¡¯®›9ž²~ž¨œŒ¨†[­h™B³p§¢›Rš~º#[­ ` − ¬
­~¡¢˜©­h¡¢žž4­~™#¦4[›Ržlœy™Bžbž4¡¯±V§¢› £
S
`
É^›'W²~ž·¦[›9œV­)¦©¨Ižb›4­V›ºB›Rš~›9¦[¨I§¢
¡ R›9°Æœ~¦[™#±V§¢›RªYʬ=›¬¨Išs·4™S§¢¨†±y›R§e¨†šs»/›Rªkœ~»Ž˜R›R§¯§
¬¡[­
C
¨š~™BšVš~›Rº¨N[¡¯®›·¡¢šH[›RºB›9¦¼,œ.™Bž4ž4¡¯±V§¯»
½4­Œ¨N¡¢š~°V¡¯˜8¨†[›Rž4­V›·§¯›Rš~º#[­F™B³Š¨kž4­~™#¦4[›9žbœC¨N[­‡³¢¦[™Bª
∞
[™
(
'
›
[
¦
c
›
†
¨
[
¦

›
[

~
­
›
4
ž
)
²
V
±
~
œ
[
¦
#
™
V
±
¢
§
9
›

ª
d
ž
[

™Y¬­~¡¢˜©­/¬=›œV§’¨†š/4™S¦[›9°V²~˜R›[­~¡¢ž9Êk³’™#¦W¨„ºB¡¯®›Rš<¡¯šs[›RºB›'S¦
£
C
«2§’¨N±y›R§¨I§¢§4­V›˜R›9§¢§¢ž[­V¨†u¨†¦[›¦[›8¨I˜©­V¨†±V§¢›³¢¦[™Bª
¡¢š‡¨†‰ª™Bžb žb4›9œVž £ ´~™#¦
›·¬¨IšH[™¬
¦[¡¯4›·¨gœ~¦[™Bº#¦©¨Iª
i 0
S
i
i = nm − 1
R¤
@¼ ¨I˜'[²V¨I§¢§¯»«y³’™#¦dž4™Bª›Wžbª¨I§¢§¢›9¦®I¨I§¢²~›!½‘«^[­~¡¢ž‰§’¨†±.›R§¢ž‰¨I§¢§˜R›R§¯§¢ž‰4­Œ¨NE¨†¦4›W¦[›8¨†˜‘­V¨†±V§¢›r³¢¦[™Bª
¨†d¨I§¢§>«
S
ž4¡¢š~˜R›u¨ž4­~™#¦4[›RžbœŒ¨†[­h¬
¡¢§¢§.š~›9®›'¦›RšH[›9¦¨†šs»c˜R›R§¢§y¬¡¯˜R› £
(
›9¦[›¡¢žy[­~›¦[›R°~²~˜9[¡¢™Bšu³¢¦[™Bª §’¨†¦[ºB›9¦2[™ž4ª¨I§¯§¢›9¦yž4²)±~œ~¦[™#±V§¢›RªžRÊ2¨†ž4ž4²~ª›[­V¨†2¬=›€­V¨R®›€¨I§¯¦[›8¨†°~»
ž4™B§¯®›9°‚4­V›dž4²)±Vœ~¦[™#±V§¢›9ª ³’™#¦
«C¡ £ › £ ¬=›·­V¨8®›d§’¨†±y›R§¯›R°Y¨I§¢§{˜R›R§¢§¯ž[­V¨†¨†¦[›d¦[›R¨I˜©­Œ¨N±Œ§¯›E³¢¦[™Bª
−1
¬¡[­~¡¢š
™#¦§¢›9ž4žžb[›9œVž £ Ÿ>išS
™#¦[°~›9¦[™ž4™B§®›E[­~›·ž4²)±Vœ~¦[™#±V§¢›9ª ³’™#¦ «C¬=›·žb[¡¢§¯§pš~›R›R°‚[™§’¨†±y›9S§
[­~›‰˜R›R§¢§¢iže−
[­V1¨†¨†¦4›‰¦[›R¨I˜©­Œ¨N±Œ§¯›u¡¢š žb[›'œŒž‰¼,±V²)
š~™#§¢›Ržbž©½ £ ²~=[­~¡¢ž¡¢ž=ž4i¡¢ªkœV§¢›I«ƒž4¡¢š~˜R›[­~›Rž4›u˜R›R§¢§¯ž
¨†¦[›‰›'µ)¨I˜9[§¯»[­~›‰²~šV§¢¨†±y›R§¢›9°…™Bš~›Rž
i¨I°BÄb¨†˜R›Ršs[™W˜R›R§¢§¢že¬
¡¯[­h§¢¨†±y›R§
£
i−1
´p¡¢ºB²)¦[› 8" ¡¢§¢§¢²~žb4¦[¨†[›Rž­~™N¬ [­~›g³¢¦4™Bšs[¡¢›'¦E™B³e§’¨†±.›R§¢›R°j˜9›R§¢§¢ž‰º#¦[™!¬žd¡¯šj[­~¡¢žuœ~¦[™s˜R›Rž4žR«p³’™#¦
i=
£
0, 1, 2, 3
!"! "! "!
!!"!! "!! "!!
"""
0 S
EE FEE FEE
POPO POPO GGPOPO HGHG HGHG HGHG F
FIFE FIFE
POPO GPO HG HG HG F
FEJ
I
JIJJIJ
I
J
2 1 0 I
J
KK IJLKK IJLKK
L
L
LL
2 1 L
KN
MM LKNMM LKNMM
N
NN
2 N
MR
QQ NMRQQ NMRQQ
R
RR
QT
R
SS RQTSS RQTSS
T
S TTS TTS
T
T
.-.- .-.- .-.- &%&% &%&% $#$# &%&% $#$# $#$# $#$#
.-.- .- &% &% $#(' &% $#(' $#(' $#('
(')'( ('*)'( ('*)'( ('*)'(
1 0*
*)*) *)*) *)*) *)*)
1*
),+ *),+ *),+ *),+
+,+ +,+ +,+ +,+
,0/ ,0/ ,0/ ,0/
0/210/ 0/210/ 0/210/ 0/210/
2121 2121 2121 2121
21 21 21 21
<;<; <;<; <;<; >=>= >=>= ??>=>= @?@? @?@? @?@?
<;<;<;<; <;<; >=>= >=>= ??>=>= @?@? @?@? @?@?
:99: :99: :99:
:987:987 :987
876587876587 876587
6565 6565 6565
465344653446534
T
334334334
434343
i=0
i=1
ccdcc dcc dcc
ceddcfe ddcfe ddcfe
eefee fee fee
fff
……†…… †…… †……
…‡††…ˆ‡ ††…ˆ‡ ††…ˆ‡
‡‡ˆ‡‡ ˆ‡‡ ˆ‡‡
ˆˆˆ
rqrq rqrq rqrq jiji jiji hghg jiji hghg hghg hghg
^]^] ^]^] __^]^] `_`_ `_`_ `_`_ baba baba baba
^]\[^]\[ _^]\[ `_ `_ `_ ba ba ba
\[\[\[\[ \[\[
ZYZY ZYZY ZYZY
ZYXWZYXW ZYXW
XWXWUXWXWU XWXWU
T
VUVVUVVUV
UVUVUV
3 qr rq rq ji ji hglk ji hglk hglk hglk
lkk lklk lklk lklk
2 1 0l
nmnm nmnm nmnm nmnm
3 2 1n
mpo nmop nmpo nmpo
poo popo popo popo
3 2p
tsts tsts tsts tsts
3t
svu tsvu tsvu tsvu
€€ €€ €€ ‚‚ ‚‚ ƒƒ‚‚ „ƒ„ƒ „ƒ„ƒ „ƒ„ƒ
€~}€~} €~} ‚ ‚ ƒ‚ „ƒ „ƒ „ƒ
~}~}~}~} ~}~}
|{|{ |{|{ |{|{
|{zy|{zy |{zy
zyzywzyzyw zyzyw
T
xwxxwxxwx
wxwxwx
vuvu vuvu vuvu vuvu
i=2
Figure 13:
AABAA BAA BAA
ACBBADC BBADC BBADC
CCDCC DCC DCC
DDD
i=3
xŠ?.%WMI3OPA.1>*l3B+<143hM9A{T4]2793T!Oi%9D
O_&)T9%8OXM&HO0OŠ\9%8O0OM
7R%‘&~\8?C&)T!O_%
Z9793BD
;=*>1@?*,+Q&H1
DF3MR1 MR14%l]^Mr;=*>1@?F1@?.%kO_%R+.-1@?<i3[Zr1@?.%WMR?.3B7!14%8MR1].C&H1@?WZ'7R3BD
143
m S
i
S
C
Á ™BšH[¡¢šs²V¡¯šVºc¡¢š‡4­V¡¯žu³_¨Ižb­V¡¯™Bš^«^¬=› VšV¨I§¢§¯»Y¨†¦4¦[¡¯®›g¨†‰[­~›gž4¡¯4²Œ¨N[¡¢™Bš‡°~›9œV¡¢˜'[›R°j¡¢šj´p¡¢ºB²)¦[› R¤ Ê
=
¨I§¢§C›Rªkœ~–»˜9›R§¢§¢že­V¨R®›‰±.›R›Ršh§¢¨†±y›R§¢›9°F¼@¨†šV°…¨†¦[›‰¡¢šc³_¨I˜9¦[›8¨I˜©­V¨†±V§¢›³¢¦[™Bª
¡¢š…[­~¡¢že›‘µ~¨IªkœV§¢›!½ £¿ ™
Vš~°Ž¨cžb­V™#¦b[›RžbuœC¨N[­‡³¢¦[™Bª
[™ «^¬=›Wžb©¨†¦bd³¢¦[™Bª
¼0¬­~¡¢˜©­j­V¨Iž‰§’¨†±yS›R§
½¨Iš~°j³’™B§¯§¢™N¬ ¨†šs»
S
T
T
21
œŒ¨†[­…™B³°~›R˜9¦[›8¨†ž4¡¢š~ºg§’¨N±y›R§¢ž¼
½e²VšH[¡¢§.¬=› ŒšV¨I§¯§¯»k¦[›8¨†˜‘­ £
20, 19, . . .
S
€
`©
R¤
4
3
2
3
4
5
6
7
5 6 7
1 0
2 1
3 2
4 3
5 4 6
5
6
8
9
"!! "!"! "!"! "!"!
10"
""! !""! !""! !""! 15 16 17 18 19
9 !
14 15 16 17 18
10 11 12 13
14
15
16 17
20 19
12 11 21 20
22 21
10 9 23 22
11 12 13 17 18
10 11
18 19
9 10
8
9
7
8
19 20
20 21
21 22
i = 23
Figure 14:
xŠ?.%ÆMI3OPA.1>*l3B+ 143•M9A^T4]27R3T!O_%RD
MI3OXaƒ%8M/1@?.%Æ-)%9+`%R79&HOP*s%‘(<]27R3T!O_%RD & +(
@1 ?.%‚3B78*0-#*,+&HO^]2793T!Oi%9D '&FMR?.3B7!14i%8MR=
1e].23
&H1@?/*>Mh3T!1b&*0+`%'(ÆT8:ŽMR1b&7!1>*0+.-rZ97R3BD
& +(
T
Z†3O,O_3B;*0+.-F&W].&H1@?<3[Zk(~%'\R7R%'&HM'*,+.-‚O’&)TR%8OXM m
É^›9RÇ¥žºB›94™k[­~›rÁ‰Â
¡¢ªkœV§¢›Rª›9šs©¨†4¡¢™Bš™B³[­~›·¨N±y™N®›·ª›'[­~™ƒ° £
¬¡¯[­
¨Iš~°
¨Iš~°›RšH4¦[¡¢›9ž—™B³C»ƒœy›
¡¢žŠ¨‰œy™Bfloor
¡¯šs[›9¦€[™d[­~›
°~¡¢ª›Rš~ž4¡¢™Bš~ž
£ ¼@´)™#¦[ª¨I§¢§»«
int
~¦[žb›R§¢›9ª›Ršsen™B+³{2¨Iš…¨†¦4¦©m
¨R»+™B³ 2
œy™B¡¢šs4›9¦[ž—[™
«±Œ²)e¬=›žb[¡¯§¢§.˜8¨Ifloor
§¯§C[­~¡¢ž=¨E¬=™ƒ°~¡¢ª›Rš~ž4¡¢™BšV¨I§
¨†¦4¦[¨8»)½ £‰¿ ­~›Ržb›r°~¡¢ª›9šVžb¡¢™Bš~ž
§¢›8n¨R®+›2žbœŒ¨I˜R›³’™#¦‰›'µƒ4int
¦©¨g¬¨I§¢§¯žž4²)¦4¦[™B²~š~°~¡¢š~ºk[­~› Œ™s™#¦ £ ƒ²~˜‘­F›'µb¦©¨
¬¨I§¢§¯ž¨†§¢§¢™!¬ ²Vž[™gºB›9¦[¡¢°Y™B³žlœy›R˜R¡’¨†§{˜8¨†ž4›RžRÊ V™s™#¦˜R›R§¯§¢ž­V¨R®¡¯šVºW§¢›Rž4ž[­V¨IšY³’™B²)¦¨I°BÄl¨I˜R›9šs˜9›R§¢§¢ž £
Ÿ>š<ºB›9šV›'¦©¨I§>«€¨Iš¨†¦4[¡ V˜R¡¢¨I§Š°V¨†©¨Y¡¯4›Rª [­V¨†ºB²V¨†¦[°~ž·[­~›c¨I˜9[²V¨I§e°V¨†©¨‚¨Iº¨†¡¢š~žb·žbœy›9˜R¡’¨I§e˜8¨†ž4›Ržr¡¢ž
˜8¨I§¯§¢›R°„¨MI%R+21>*0+`%8O £
¿ ­~›E­~›8¨N¦4™B³[­~›‰œV¦4™Bº#¦©¨Iª ¼0¬­~¡¢˜©­Y¨†œ~œy›8¨N¦[ž¨Iž ¦4™Bº#¦©¨Iª Èr±y›R§¢™!¬½e¡¢ž¨W§¢™ƒ™#œ„4­Œ¨N
˜R™BªgÅ
œV²)[›Rž[­~›žb™B§¢²)[¡¢™Bš[™užb²~±~œ~¦[™#±V§¢›Rª
³¢¦[™Bª 4­V›ž4™B§¢²)[¡¯™Bš4™už4²)±~œ~¦[™#±V§¢›Rª
«s³’™#¦
£
i−1
¡¢ž—¦[i›8¨†°V¡¯§¯»¨R®I¨I¡¢§’¨†±V§¢›IÊp¬=›ž4›9=[­~›
›Ršs4¦b»˜R™#¦4i¦[›R=žlœy1,™Bš~2,°V.¡¯šV. .º
¿ ­V›ž4™B§¯²~4¡¢™Bšk[™ž4²)±~œV¦4™#±Œ§¯›Rª
[™ [™ «B¨Iš~°·[­~›—›RšH4¦[¡¢›Ržp˜R™#¦4¦[0›Ržlœy™Bš~°V¡¯šVº[™
[­~›—›Rªkœ~»u˜R›R§¢§¢ž^[™ floor
¼,4­V¡¯ž{¡¢žpª›8¨Išs^[™¡¢š~°~¡¢˜8¨N[›
S 0
−1
[­V¨†=[­~›‰˜R›R§¢§^­V¨Ižš~™#=±y›R›9šY§’¨†±y›R§¯›R°c»›'‘½ £ ¨I§¢§¯ž¨N¦[›d¨†§¯¬¨R»ž=§’¨†±y›9§¢›R°…¬
¡¯[­c[­~›u¡¢šH[›RºB›9¦
£
−2
Ÿ>šY¡¯[›9¦[¨†[¡¢™Bš ™B³{[­~›d§¢™s™#œ{«)¬=›Ežb¡¢ªkœV§¯»ºB™g[­)¦[™B²~ºB­‚¨I§¯§24­V›‰»›9²~š~§’¨†±y›9§¢›R°h˜9›R§¢§¢ž
¨Iš~°Y§’¨†±y›R§
i
›'µ)¨I˜9[§¯»[­~›‰™Bš~›Rž
¬
¡¯[­ [­V¨†­V¨R®›E¨IšY¨†°Äl¨I˜9›Ršs˜R›R§¯§2¬
¡¯[­…§’¨†±y›R§
£€¿ ­~›d§¢™s™#œ…4›9¦[ª¡¢šV¨†[›9ž
i
i−1
¨Ižž4™s™Bš‡¨Ižš~™œ~¦[™Bº#¦[›Rž4ž¡¢žª¨I°~›·¨†šs»ª™#¦4›#«.ª›8¨Iš~¡¢š~ºg4­Œ¨NšV™š~›9¬“˜R›9§¢§˜R™B²~§¢°‚±y›§’¨†±y›9§¢›R°‚¡¢š
[­~›‰˜R²)¦4¦[›RšH¡¯[›'¦©¨†[¡¢™Bš £ (›9¦[›d¡¯ž=4­V›u˜R™ƒ°~› £
The shortest path program.
›‚¦[›9œ~¦[›9ž4›Ršs…[­~› V™s™#¦c±s»•¨Æ°)»šV¨Iª¡¯˜8¨I§¢§¯»<¨I§¢§¯™ƒ˜8¨†4›R°5–¬=™s°~¡¢ª›Rš~ž4¡¢™BšV¨I§
¨†¦4¦©¨R»
// 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 ||
R¤
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 ;
}
³’²~šV˜'[¡¢™Bšj¨N¦[›Wª™#¦4›·™#¦d§¢›9ž4žužl4¦©¨I¡¢ºB­H[³’™#¦4¬¨†¦4° £ Ÿ>šV¡[¡’¨I§¢§»«V¬=›
¿ ­~›r™#[­~›9¦‰œC¨N¦4[ž™B³€[­~›
¦[›8¨†°h[­~›u°~¡¢ª›9šVžb¡¢™Bš~že³¢¦[™BªÍžlmain
©¨Iš~°V¨†¦[°h¡¯š~œV²)¨Iš~°„°~™W[­~›‰°)»šV¨Iª¡¢˜¨I§¯§¢™ƒ˜8¨N[¡¢™Bš £
// read floor dimensions
int n ; std :: cin > > n ; // number of rows
int m ; std :: cin > > m ; // number of columns
// 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];
›'µƒ8«H¬=›e¦[›R¨I°g[­~›
V™ƒ™#¦œV§’¨Išr³¢¦[™Bª žl©¨Iš~°V¨†¦[°g¡¯š~œV²) £ › ¨†ž4ž4²~ª›—[­V¨†¡¯¡¢žºB¡¯®›Ršr¦[™N¬¬¡¢žb›
¨IžW¨Yž4›R¸ƒ²~›Rš~˜R›…™B³
˜©­V¨†¦©¨I˜'[›9¦[žR«¬­~›9¦[›
¨Iš~°
žl©I¨ š~°<³’™#¦Wž4™B²)¦[˜R›h¨Iš~°©¨†¦4ºB›98«
nm
’S’
’T’
¦[›9œ~¦[›9ž4›Ršs4žg¨h¬¨I§¯§>«¨Iš~°
¨Iš›9ªkœV»‡˜R›R§¢§ £F¿ ­V›¡¢š)œV²) V¢§ ›³’™#¦r™B²)¦¡¢š~¡¯[¡’¨I§›'µ)¨IªkœV§¢›k³¢¦[’X’
™Bª
´p¡¢ºB²)¦[› ! ¬=™B²~§¢°c[­~›Rš„§¢™s’-’
™#¹c¨Iž¡¢š„´p¡¯ºB²~¦4› 8 12
------X - - - - -XXX - -X - - - - --SX - - - - - - - ---X - - -XXX - ---X - - -X - - - ---X - - -X - - - ---X - - -X -T - -------X - - - -
Figure 15:
+]2A.1^ZI3B7 7939-B79&D
F\93B7879%8Ml]y3B+(*0+.-‚143„1@?.%…%‘~&Dr]^Oi%…3[Z|Š*0-BAŒ7R%
>Ÿ ³ƒ™#[­~›9¦^˜©­V¨†¦©¨I˜'[›9¦[ž{¨†¦[›³’™B²~šV°u¡¢šu4­V›¡¢š)œV²)¼>™#¦^¡¢³[­~›€¡¢š)œV²)yœ~¦[›Rª¨†[²)¦[›9§¯»
±y›9˜R™Bª›Rž2›Rªkœ~»~½'«
¬=›·ºB›Rš~›9¦©¨N[›·›Rªkœ~»„˜R›R§¯§¢ž £ ­~¡¢§¢›d¦4›8¨I°~¡¢š~ºk[­~› V™ƒ™#¦œV§’¨Iš2«V¬=›EœŒ²)4­V›¨NœVœ~¦[™#œ~¦[¡¢¨†[›d¡¯šs[›RºB›'¦[ž
¡¢šH[™r4­V›‰›RšH4¦[¡¢›Rž™B³
«Œ¨†šV°…¬=›‰¦[›9ª›Rªr±.›9¦e[­~›‰[¨†¦[ºB›9œy™Bž4¡¯4¡¢™Bš…³’™#¦§’¨†4›9¦ £
floor
// target coordinates , set upon reading ’T ’
int tr = 0;
int tc = 0;
€
`©
// 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;
}
™!¬
¬=›u¨I°~°h[­~›‰ž4²)¦4¦[™B²~š~°~¡¢š~ºr¬¨I§¯§¢ž=¨Ižž4›Ršs4¡¢š~›R§¢ž £
// 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;
›'µƒp˜R™Bª›9ž^[­~›ª¨I¡¢š‰§¢™ƒ™#œu[­V¨†2¬=›€­V¨R®›—¨†§¯¦[›8¨I°)»°~¡¢ž4˜9²Vžbž4›R°¨†±y™!®› £ Ÿ,p§’¨N±y›R§¢ž^¨I§¢§#¦4›8¨I˜©­V¨†±V§¢›
R˜ ›R§¯§¢žR«Nž4™4­Œ¨N^¬=›™#±~©¨I¡¢šu¨e§’¨†±y›9§¢¡¢š~º=¨Iž2¡¢šE´{¡¢ºB²)¦[› R¤)£ ´¦[™BªL[­~¡¢ž2§’¨†±y›R§¯¡¢š~º)«9¬=›€ªr²~žb2š~™N¬/›‘µ4¦©¨†˜9
[­~›
žb­V™#¦b[›Ržb€œC¨N[­k³¢¦[™Bª
[™ £ à ž€›'µœV§’¨†¡¢š~›R°k¨†±.™N®›#«H[­~¡¢ž˜8¨Išk±y›°V™Bš~›±ƒ»W³’™B§¢§¢™!¬¡¢š~º‰¨u˜©­V¨I¡¢š
S T
™B³—¨†°Äl¨I˜9›Ršs‰˜R›R§¯§¢ž¬¡¯4­F°~›R˜9¦4›8¨Iž4¡¢š~ºc§’¨†±y›9§¢ž £ ´)™#¦u›9®›9¦4»S˜R›9§¢§™BšF[­~¡¢žœŒ¨†[­¼>›'µ˜R›9œ~ ½'«.¬=›·œV²)
¡¢šs[™c[­~›g˜R™#¦b¦[›Ržbœy™Bš~°~¡¢š~º
›RšH4¦4» 4­V¡¯žd¨I§¯§¢™N¬
ž²Vž‰[™„°)¦©¨R¬“[S­~›WœŒ¨†[­‡¡¢š
[­~›g¡¯šs[›RºB›'¦
−3
floor
[­~›·ž4²)±Vž4›R¸s²V›9šs™B²)4œV²) £ Ÿ>³š~™kœŒ¨†[­Y¬¨Iž³’™B²~š~°Æ¼,™#¦¡¢³`[­~›9¦[›E¡¯žšV™k[¨†¦[ºB›9‘½‘«Œ[­~›d±y™s°)»„™B³`[­~›
žb©¨†[›9ª›Ršs=¡¢š…[­~›u³’™B§¢§¯™N¬
¡¢š~º·˜R™ƒ°~›‰³¢¦©¨IºBª›RšH¡¯žu¼>˜9™#¦4¦[›R˜94§¯»~½eš~™#›‘µ)›R˜R²)[›9°‚¨†¨†§¢§ £
while
// 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 )
}
´p¡¢šV¨I§¢§»«.[­~›g™B²)4œV²)8ʬ=›Wª¨†œF[­~›W¡¯šs[›RºB›'¦d›RšH4¦[¡¢›9žu™B³
±Œ¨I˜[¹‚[™h˜©­V¨†¦©¨I˜'[›9¦[žR«^¬­~›9¦[›
floor
±.›R˜R™Bª›Rž
«Œ™B²)¦œC¨N[­„žb»ƒªr±y™B§ £ Ÿ>š~ž4›9¦b[¡¢š~º
¨†[­~›u¦[¡¯ºB­s=œV§’¨I˜R›Rž9«V¬=›‰™#±~©¨I¡¢šh¨W˜R™#œs»
−3
™B³C[­~›¡¢š)œŒ²) V™’o’
ƒ™#¦8«¬¡¯4­W[­~›
žb­V™#¦b[›Ržb€œC¨N[­¨†œ~œy›8’\n’
¨†¦4¡¢š~ºu¡¢šk¨I°~°V¡[¡¢™Bš £ ›
ªr²Vžl—¨I§¯ž4™dš~™#—³’™#¦4ºB›9
[™W°V›9§¢›9[›[­~›u°)»ƒšŒ¨†ª¡¢˜8¨I§¢§»k¨I§¯§¢™ƒ˜8¨N[›R°…¨†¦4¦©¨R»ž¡¢šh4­V›‰›Rš~° £
// 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 ";
}
<<
<<
<<
<<
<<
’S ’;
’T ’;
’o ’;
’X ’;
’-’;
// delete dynamically allocated arrays
for ( int r =0; r <n +2; ++ r)
delete [] floor [r ];
delete [] floor ;
return 0;
>Ÿ š„˜8¨Ižb›d™B³™B²)¦¡¢š~¡¯[¡’¨I§C›'µ~¨IªkœV§¢›I«ƒ[­~›u™B²)4œV²)§¢™ƒ™#¹ƒž§¯¡¯¹›u¡¯š„´p¡¢ºB²)¦[› È £ ¦[™Bº#¦[¨Iª
[­~›‰˜R™BªkœV§¢›9[›ž4™B²)¦[˜9›d˜R™s°V› £
Èrž4­~™N¬
ž
ooooooX - - - - oXXX -oX - - - - ooSX - oooooo ---X - - -XXXo ---X - - -X -oo ---X - - -X -o - ---X - - -X -T - -------X - - - -
Figure 16:
AC1¯]2A.1‰3[Z =7R39-#79&D
‚3B+51@?.%r*,+]2AC1u3[Zr|Š*0-#AC7R% # include < iostream >
int main ()
{
// read floor dimensions
int n ; std :: cin > > n ; // number of rows
int m ; std :: cin > > m ; // number of columns
// 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)
€
`©
B
floor [r ] = new int [m +2];
// target coordinates , set upon reading ’T ’
int tr = 0;
int tc = 0;
// 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;
}
// 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;
// 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 ;
}
// 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)
}
// 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 ";
}
<<
<<
<<
<<
<<
’S ’;
’T ’;
’o ’;
’X ’;
’-’;
// delete dynamically allocated arrays
for ( int r =0; r <n +2; ++ r)
delete [] floor [r ];
delete [] floor ;
return 0;
}
Program 16:
]27R39-M ^
MR?.3B7!14%8MR1 ].&H1@?Cm@t
2.6.12 Beyond arrays and pointers
à ¦4¦[¨8»ƒž¨†¦[›„®›'¦4»5²~ž4›R³’²~§³’™#¦ª¨IšH»/©¨Ižb¹ƒž¨Iš~°•¨†§¢§¢™!¬Í²~žg4™Žž4™B§¯®›„š~™Bšsb¦[¡¯®¡¢¨I§œ~¦[™#±V§¢›9ªžW§¢¡¹›
Vš~°V¡¯šVºgž4­~™#¦4[›RžbœŒ¨†[­~ž¡¯š‚4­V›Eœ~¦[›'®¡¢™B²~žž4›R˜'[¡¢™Bš £ ´¦[™Bªˆ¨g[­~›R™#¦[›'[¡¢˜8¨I§^œy™B¡¢šH™B³`®¡¢›9¬d«y¨†¦4¦[¨8»ƒž
¨†¦[›‰¡¢š„³_¨†˜94­V›‰™Bš~§¯»˜R™BšH©¨I¡¢š~›9¦[ž=[­V¨†=¬=›‰šV›9›R° £
š…[­~›‰™#4­V›'¦­V¨Iš~°2«[­~›9¦[›‰¨†¦4›¬=™rª¨I¡¢š°)¦©¨R¬
±Œ¨I˜[¹ž=™B³{¨†¦4¦©¨R»ƒž[­V¨†e¬=›¬¨IšH=[™r¦4›R˜8¨†œV¡¯bÅ
²~§’¨†[›­~›9¦[› £
à šH»r¨†¦4¦©¨R»«›9®›Ršg¡¢³Œ¡¡¢ž°~»ƒšV¨Iª¡¢˜8¨I§¯§¯»u¨I§¢§¢™s˜8¨†[›R°2«#­V¨Iž¨ )µ)›R°W§¢›Rš~º#[­ £
>Ÿ š™#[­~›9¦e¬=™#¦[°~žR«H¬=›­Œ¨R®›
4™¹ƒš~™N¬ TR%>Z†3B7R%·°~›Vš~¡¢š~ºE™#¦=°)»šV¨Iª¡¢˜8¨†§¢§¯»¨I§¯§¢™ƒ˜8¨N[¡¢š~ºd¨†š…¨N¦4¦©¨R»­~™N¬
ª¨IšH»Y›R§¢›Rª›9šs[ž¬=›rš~›R›R°‡[™cžb[™#¦4›r¡¯š‡¡¯ £ ³¢4›Rš2«{[­~¡¢ž¡¢ž²~š)¦[›8¨I§¯¡¢žb[¡¢˜ £ ´)™#¦‰›'µ~¨IªkœV§¢›I«.¡¢š‡žb™Bª›
¨†œ~œV§¢¡¢˜8¨N[¡¢™Bš…¬=›dª¡¢ºB­sš~›R›R°‚[™kžb4™#¦[›·¨gž4›9¸ƒ²~›Rš~˜R›·™B³¡¢š)œV²~šƒ²~ª±y›9¦[ž9«Œ±V²)
¬=›E°~™Bš2Ç ¹š~™N¬¡¢š
¨I°)®I¨Iš~˜R›u­~™!¬Lª¨IšH»šƒ²~ª±y›9¦[že¬=›¬¡¢§¯§CºB›9 £ à »ƒœV¡¢˜8¨I§ bž4™B§¢²)[¡¢™Bš ¡¢že[™r°)»šV¨Iª¡¢˜8¨†§¢§¯»W¨I§¢§¢™s˜8¨†[›
Arrays have fixed length.
€
`©
I¤
¨W®›9¦b»‚§’¨†¦[ºB›d¨†¦4¦©¨R»‚¨Iš~°Ä–²~žb­~™#œy›E[­V¨†[­~›·ž4›R¸ƒ²~›Rš~˜R› ~[ž¡¯š £
¿ ­~›Eœ~¦[™#±V§¢›Rªž¬¡¯4­„[­~¡¢ž¨Iš~°
¨·±y›94[›'¦d¼,±V²)žb[¡¢§¯§y˜R²~ªr±y›'¦[ž4™Bª›!½Šž4™B§¯²~4¡¢™Bšh¨N¦[›d™B²)[§¢¡¯šV›9°…¡¢š `µ›9¦[˜R¡¯ž4›EÈ ƒ£
à l¦[›R¨I§ žb™B§¢²)[¡¢™BšJ¡¢žœy™Bž4žb¡¯±V§¢›…¡¯šQÁ‰ˆ4­~¦4™B²VºB­[­~›„²~ž4›h™B³Ea%'\8143B7!M £Q¿ ­V›9ž4›Y¨†¦[›h˜R™BšÅ
©¨I¡¯šV›'¦[ž³¢¦4™BªÀ
[­~›‰žb©¨Iš~°V¨†¦[°h§¢¡¯±~¦©¨†¦4»g[­V¨†
˜9™Bªr±V¡¢š~›[­~›‰˜R§’¨Iž4žb¡¢˜8¨I§^¨†¦4¦[¨8»c³’²~š~˜9[¡¢™BšV¨I§¯¡¯»Y¼@¨Iš~°„¡¯4ž
› g˜R¡¢›Rš~˜9»)½e¬
¡¯[­…4­V›œy™Bž4žb¡¯±V¡¢§¢¡¯»k™B³{º#¦[™!¬¡¢š~ºc¼@¨Iš~°hž4­)¦[¡¯š~¹ƒ¡¢š~ºH½Š¡¢šh§¯›Rš~º#[­ £ ›R˜'[™#¦[ž˜8¨Išh±y›‰¡¢ªgÅ
œV§¢›Rª›RšH[›R°™Bš[™#œc™B³^¨†¦4¦©¨R»ƒžR«)¨Iš~°[­~›9»­V¨R®›ž4™Bª›9[­~¡¢š~ºuž4¡¢ª¡¢§’¨N¦4™E[­~›ª›R˜©­V¨Iš~¡¢ž4ª ™B²)[§¯¡¢š~›R°
¡¢š µ)›9¦[˜9¡¢ž4›‚È l±V²V¡¯§¯g¡¯š £ ›9˜9[™#¦[ž¨I§¯ž4™j§’¨†¦4ºB›R§¯»<¦4›Rª™N®›…[­~›YšV›9˜R›Rž4ž4¡–»J™B³¬=™#¦b¹¡¢š~ºj¬¡[­
œy™B¡¢šH[›9¦[ž £ ›u¬
¡¢§¢§.ºB›9[™r®›R˜9[™#¦[žu¼@¨Iš~°…4­V›9¡¯¦¦4›8¨I§¢
¡ R¨†[¡¢™BšŒ½€§’¨N[›9¦¡¢š…4­V¡¯ž±y™s™#¹ £
¿ ­V›²~ž[¨IºB›™B³C™B²)bÅ>™B³¯Å>±y™B²~š~°k¨†¦b¦©¨R»W¡¯šV°~¡¢˜9›Rž¡¢žšV™#°~›9[›9˜9[›R°k¡¯šÁÂu·«ƒ¨†šV°
[­~›
ž4¨Iª›=­V™B§¯°Vž³’™#¦Šœ.™B¡¢šs[›'¦[ž4™E¨I°~°)¦[›Rž4žb›RžŠ¬­~›9¦4›š~™dœ~¦[™Bº#¦©¨†ª ™#±VĖ›R˜9Š§¢¡¯®›Rž £ ¡¯4­gž4™Bª›˜8¨†¦[›I«
»™B²S˜8¨Iš‚¬
¦[¡¯4›Ež4ª¨I§¢§^œ~¦[™Bº#¦©¨Iªž[­V¨†²~ž4›r¨†¦4¦©¨R»ƒž¨Iš~°Sœy™B¡¯šs[›9¦4ž¡¢šF¨g˜R™#¦4¦[›9˜9‰ª¨Iš~šV›'¦8«Œ±V²)¡¢š
˜R™BªkœV§¢›'µœ~¦[™Bº#¦[¨IªžR«[­~¡¢ž¡¢žš~™#
›8¨Ižb»h¨†¨†§¢§ £ ›9±V²~ºBºB¡¢š~ºr³_¨I˜R¡¢§¢¡[¡¢›Rž=™B³ª™s°V›'¦[šh˜R™BªkœV¡¢§¯›9¦[ž=˜8¨Iš
­~›R§¯œ^«C±V²)‰›9®›RšF¬=›9§¢§Å>4›Ržb[›R°F¨Iš~°S³¢¦[›R¸ƒ²~›RšH[§¯»‚²~ž4›R°F§’¨†¦[ºB›uœV¦4™Bº#¦©¨Iªž°~™š~™#šV›9˜R›Rž4ž[¨N¦[¡¢§¯»‚ºB›9¡
¦[¡¢ºB­H £ Ÿ>šk³_¨I˜'8«ƒž4™Bª›=œy›R™#œV§¢›‰¼>§¢›'8Ç¥ž€˜8¨I§¢§)[­~›Rª ¨†4©¨I˜[¹›9¦4ž©½€¨†¦4›
ª¨†¹ƒ¡¢š~ºu¨±V²Vžb¡¢š~›Rž4žŠ™B³y›‘µœV§¢™B¡¯[¡¯šVº
œ~¦[™Bº#¦©¨Iªª¡¯šVº‰›9¦4¦4™#¦[ž—¦[›R§’¨N[›R°[™r¨†¦4¦©¨R»ž=¨†šV°œy™B¡¢šH[›9¦[žŠ¡¢š…™#¦4°V›'¦e[™˜9¦[›8¨†4›‰ª¨†§¢¡¢˜R¡¢™B²~žž4™B³¢¬¨†¦[› £
ƒ²)œVœ.™Bž4›E[­V¨†
4­V›E¨†4©¨I˜[¹›9¦¹ƒš~™N¬
ž
[­V¨†žb™Bª›uœ~¦[™Bº#¦©¨Iª Q4­V¡¯š~¹™B³¨†šS™#œ.›9¦©¨†[¡¯šVºgžb»žb4›Rª
¦[™B²)[¡¢š~›r™#¦·¨¬=›9±Vž4›9¦4®›9¦ •ª¨8»Æ¼>²~š~¡¢šH[›Ršs4¡¢™BšV¨I§¢§¯»)½¬
¦[¡[›W¡¯š~œV²)u°Œ¨N©¨±.›9»™Bš~°j[­~›W±y™B²~š~°~žd™B³
¨Iš¨†¦4¦©¨R» £ ²V›k4™S[­~›k®™BšÅ ›R²~ª¨Iš~š¨N¦[˜©­V¡[›R˜9[²)¦[›I«4­V›œŒ¨†¦4™B³e[­~›ª¨I¡¢šŽª›9ª™#¦4»F±.›R¡¢š~º
¨I˜R˜9¡¢°~›Ršs©¨†§¢§¯»Æª™ƒ°~¡ V›R°J¡¯šJ[­~¡¢žg¬¨R»Jª¨R»˜R™Bšs©¨†¡¢šJ[­~›Y¨I˜94²Œ¨†§œ~¦[™Bº#¦©¨Iª ¡¢š~žb4¦[²~˜94¡¢™Bš~ž £¿ ­~›
¨†4[¨I˜[¹›9¦Eª¨R»Y[­~›Rš‡±.›g¨†±V§¢›[™cœV¦4›9œŒ¨†¦[›k¨†šj¡¢š)œV²~[™c[­~›rœ~¦[™Bº#¦[¨Iª ¡¢šjž4²~˜©­/¨¬¨R»S[­V¨†[­~›
œ~¦[™Bº#¦©¨Iª ª™ƒ°~¡ V›Rž¡¯4ž4›R§¢³Š4™„°~™„¬­V¨†[›9®›'¦d[­~›k¨N4©¨I˜[¹›9¦E¬¨†šs[žu¡¯d[™h°V™ £¿ ­~¡¢ždª™s°~¡ V˜8¨†[¡¢™Bš
¦[²~š~ž¬¡¯[­„4­V›ž[¨†ª›·¨I˜R˜R›9ž4ž¦[¡¢ºB­s4ž¨Iž[­~›™#¦[¡¢ºB¡¢šV¨I§^™Bš~›#«2¨Iš~°S4­V›9ž4›ª¡¢ºB­s±y›¨I°~ª¡¢š~¡¢žb4¦[¨†[™#¦
¦[¡¢ºB­H[ž=¡¢šh[­~›¬=™#¦[žb˜8¨Iž4› £
Ÿ>šJ[­~¡¢ž¬¨8»«—¨Iš5¨†4[¨I˜[¹›9¦k˜R™B²~§¢° b­V¡ Äb¨†˜©¹ [­~›…˜R™BªkœV²~4›9¦[­V¨†W¦4²Vš~žr[­~›cœ~¦[™Bº#¦©¨†ªY«Š¨Iš~°
ž4²)±Vž4›R¸s²V›9šs[§¯»cª¡¢žb²Vžb›‰¡³’™#¦
¡¢§¢§¢›9º¨I§.¨I˜'[¡¯®¡[¡¢›Rže §¢¡¹›už4›9šV°~¡¢š~ºržbœŒ¨IªY«™#¦œŒ¨†¦©¨I§¯» R¡¢š~º·¬=›9±Yž4›'¦4®›9¦[ž
±ƒ» V™ƒ™s°~¡¢š~º4­V›9ªÀ¬
¡¯[­…¦4›R¸ƒ²~›Ržb4ž £
´)™#¦e²~žŠ[­V¨†Š¬=›
¨†¦[›š~™#
¼,»›9‘½œ~¦[™B³’›9ž4ž4¡¢™BšV¨I§~œ~¦[™Bº#¦©¨Iªª›9¦4žR«#[­~›ž4›R˜9²~¦4¡¯»¨Ižbœ.›R˜9—¡¯ž—§¢›Rž4ž€™B³2¨
˜R™Bš~˜R›9¦4š…­~›9¦[› £ h™#¦4›¡¢ªkœy™#¦4©¨†šs¡¢žŠ[­V¨†€œ~¦[™Bº#¦©¨Iªª¡¢š~º›9¦4¦4™#¦[ž—°~²~›[™·¡¢ªkœ~¦[™#œy›9¦€²~ž4›™B³^¨†¦4¦[¨8»ƒž
¨Iš~°„œy™B¡¢šH[›9¦[ž˜8¨Iš„±.›u®›9¦4»h­V¨†¦[°h[™ Œš~°Y¨†šV°Y™B³¢4›Rš„¦[›Rª¨I¡¯šh²~š~°V›'[›R˜9[›9°Y²VšH[¡¢§y[­~›9»…ž4²~°~°V›9šV§»
¦[›Ržb²V§¡¢šFžl4¦©¨Iš~ºB›¨Iš~°Sž4›R›Rª¡¢š~ºB§¯»h¡¢š~›'µœV§¢¡¯˜8¨†±V§¢›u±.›R­V¨8®ƒ¡¢™#¦™B³[­~›·œV¦4™Bº#¦©¨Iª £ à §¢žb™­V›'¦[›#«2²~ž4¡¢š~º
®›R˜94™#¦[žE¡¢š~žb[›R¨I°Ž™B³=¨†¦4¦©¨R»ƒžd­~›R§¯œVžR«žb¡¢š~˜R›W[­~›9¦4›¨†¦[›Wª¨Išs»‚œy™#[›9šs[¡’¨†§›'¦4¦[™#¦[žd¦4›R§’¨†[›9°j[™Y¨†¦4¦[¨8»ƒž
¨Iš~°hœy™B¡¯šs[›9¦4ž=4­Œ¨N»™B²Yžb¡¢ªkœV§¯»k˜8¨†šVš~™#ª¨†¹›¬¡¯4­…®›R˜94™#¦[ž £
Arrays are insecure.
™!¬
» ™B²Yª¨R»…¨Ižb¹…¬­H»…¬=›E­V¨R®›E¡¢šH4¦[™s°V²~˜R›9°Y¨†¦4¦©¨R»ƒž¨Iš~°„œy™B¡¢šH[›9¦[ž
¨†
¨I§¢§.¬
­~›Ršh[­~›9¦[›d¨†¦[›‰ª™#¦[› V›'µ)¡¯±V§¢›‰¨Iš~°…ž[¨I³’›9¦¨I§¯[›9¦4šŒ¨N[¡¯®›Rž £ (
›'¦[›d¨N¦[›‰4­V›[­)¦[›R›‰¦[›8¨Ižb™BšVž £
Why arrays, after all?
#£ à b¦ ¦©¨R»ž`¨Iš~°œy™B¡¢šH[›9¦[žp¨†¦[›—[­~›—ž4¡¯ªkœŒ§¯›Ržb{ª™ƒ°~›R§¢ž{™B³V¡¯ªkœy™#¦4©¨IšH^žb©¨Iš~°V¨†¦[°§¢¡¯±~¦©¨N¦4»d˜9™BšV˜9›9œ~[ž
¼>˜9™Bšs©¨I¡¯šV›'¦
¨†šV°h¡¯[›9¦©¨N[™#¦‘½ £
š §¢¡¹›W®›R˜94™#¦[žR«¨†¦4¦©¨R»ƒžE˜8¨Iš/±y›k¡¢šH4¦[™s°V²~˜R›9°j¬¡¯[­~™B²)d4­V›gšV›9›R°Æ4™Y°V¡¯ž4˜R²~ž4ž·žb»ƒšs©¨I˜'[¡¢˜8¨I§
ģ ~
¨Iš~°Fž4›Rª¨IšH[¡¢˜8¨I§p¨Ižbœy›9˜9[ž™B³ÁÂu ³’²~š~˜9[¡¢™Bš~ž¨Iš~°‡˜9§’¨Iž4ž4›9žW¼,4­Œ¨N¬=›ržb¡¢ªkœV§¯»h°~™Bš2Ç ‰­V¨R®›
¨†™B²)¦°V¡¯žbœy™Bž[¨I§^¨†=[­~¡¢ž=œy™B¡¢šH‘½ "£ Ÿ>šj™#¦4°V›'¦d[™c¦[›8¨I§¢§»F²~š~°~›9¦[žb[¨Iš~°j§’¨†[›'¦d­~™!¬ žl©¨Iš~°V¨†¦[°j§¢¡±V¦[¨†¦4»‚˜R™BšH©¨I¡¢š~›9¦[žu¨Iš~°j¡¯4›9¦©¨†[™#¦4ž
¨†¦4›‰¦[›R¨I§¢
¡ R›9°^«)¡¡¯žš~›R˜R›9ž4ž[¨†¦4»c[™r¹š~™N¬ ¨†±.™B²~¨†¦b¦©¨R»ž¨Iš~°hœy™B¡¢šH[›9¦[ž £
¿ ­~›©¨†¹›'Å>­V™Bª›ª›Rž4ž4¨IºB›­~›9¦4›¡¢ž[­~¡¢žRÊ¡¯€¡¢ž¡¢ªkœy™#¦4[¨Išs`[™uºB›9—³_¨†ª¡¢§¢¡’¨†¦p¬¡¯[­r[­~›W\'3B+`\9%b]^1@M
±y›R­~¡¢š~°…¨†¦4¦©¨R»ƒž¨†šV°cœy™B¡¢šH[›9¦[žR«s±Œ²)¡¯=¡¢ž=§¢›9ž4ž=¡¢ªkœy™#¦4©¨†šsŠ4™±.›d¨†±V§¢›4™g¨I˜'[²V¨I§¢§¯»WœV¦4™Bº#¦©¨Iª ¬¡[­
¨†¦4¦[¨8»ƒž
¨†šV°…œy™B¡¢šs4›9¦[ž=™BšY¨§’¨†¦[ºB›‰ž4˜8¨I§¯› £
2.6.13 Details
>Ÿ š ¦4™Bº#¦©¨Iª ³’™#¦Ežl4¦[¡¢š~ºhª¨N[˜©­V¡¯šVº)«y¡d¡¢ž‰š~™#u®›'¦4»j˜R™BšH®›Rš~¡¢›RšH
[­V¨†‰[­~›Wžb›8¨†¦[˜©­/žb4¦[¡¯šVºc¡¢ž €V%'( £ ›r4­V›9šŽ­Œ¨R®›r[™…¦[›9˜R™BªkœV¡¢§¢›·[­~›rœ~¦[™Bº#¦[¨Iª ›'®›9¦4»S[¡¢ª›·¬=›
¬¨IšH[™rž4›8¨N¦[˜©­Y³’™#¦¨Iš~™#[­~›9¦žb4¦4¡¢š~º £
à ª™#¦[› Œ›‘µ)¡¯±V§¢›¨I§¯[›'¦[šV¨†[¡¯®›¡¢ž€[™EœŒ¨IžbžŠ[­~›ž4›8¨N¦[˜©­…žbb¦[¡¢š~º·¨Iže¨c\93BDhDS&+(cOX*0+`%k&7b-BAŒD‡%R+21
[­V¨†=¬=›uœ~¦[™!®¡¯°V›²)œy™Bš„˜R¨I§¢§¢¡¢š~ºE[­~›œ~¦[™Bº#¦©¨Iª £
¿ ­~›Wª¨I¡¢šS³’²Vš~˜94¡¢™Bšj˜8¨Išj¨I˜R˜R›RžbžEž4²~˜©­Ž˜R™Bªª¨Iš~°F§¯¡¢š~›W¨N¦[ºB²~ª›Ršs[ž¡¢³¬=›Wœ~¦[™!®¡¢°~›rž4²~¡¯©¨†±V§¢›
œŒ¨†¦©¨Iª›'[›9¦[ž £ (
›9¦[›¡¢ž­~™!¬¶[­~› ~¦[žl‰4›Rš‡§¢¡¯šV›9ž™B³ `¦[™Bº#¦©¨Iª ­V¨8®›[™±y›˜©­Œ¨†šVºB›9°j¡¢šS™#¦[°~›9¦
[™Wª¨†¹›[­~¡¢že¬=™#¦4¹ £
Command line arguments.
# include < iostream >
// 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
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;
}
// search string : second command line argument
char * s = argv [1];
¨Iš~°·¨Iš~°
¼,¬
­~¡¢˜©­E¡¢ž¨†š·¨†¦4¦©¨R»u™B³ƒœy™B¡¢šH[›9¦[ž{›8¨I˜©­·™B³ƒ¬
­~¡¢˜©­E¡¢šd[²)¦[š
¿ ­~›®#¨I§¯²V›9žp™B³
argc
argv[]
œy™B¡¢šH[ž[™[­~› ~¦[žb›R§¢›9ª›Ršs[žp™B³C¨ R›9¦4™IÅ>[›9¦4ª¡¢šV¨†[›R°¨†¦b¦©¨R»™B³Œ˜©­V¨†¦©¨I˜'[›9¦[ž©½`¨†¦4›e¡¢š~¡¯[¡’¨I§¯¡
R›R°d±s»·[­~›
™#œy›9¦[¨†[¡¢š~ºžb»ƒžb[›Rª¶¬­~›RšW¡¯˜8¨I§¯§¢žp[­~›
³’²~šV˜'[¡¢™Bš £ ›e¬
¡¢§¢§ƒ›‘µœV§’¨I¡¢š³’²~š~˜9[¡¢™BšœŒ¨†¦©¨Iª›'[›9¦[ž`¡¢š
main
°~›9©¨I¡¯§V§¢¨†[›9¦8«H­~›9¦[›¬=›¬¡¯§¢§)±y›
ž[¨N[¡¢ž V›R°g¬
¡¯[­¨†šk›'µ~¨†ªkœŒ§¯› £ ƒ²)œ~œy™Bž4›4­Œ¨N€¬=›˜R¨I§¢§)[­~›œ~¦[™Bº#¦©¨†ª
§¢¡¯¹›[­~¡¢ž‰¼@¨Ižbž4²~ª¡¢š~º¨ š~¡µsÅ>»ƒœ.›užb»ƒžb[›Rªc½‘Ê
./ string_matching2 bool
¼,¬
­~¡¢˜©­Æ˜9™B²VšH[žE[­~›šƒ²~ª±y›9¦d™B³˜R™Bªª¨†šV°F§¢¡¢š~›¨†¦4ºB²Vª›9šs[ž©½ºB›9[ž·¡¢š~¡¯4¡’¨I§¢
¡ 9›R°
¿ ­~›Rš
argc
¬¡[­k®#¨†§¢²~› £¿ ­~¡¢ž—˜9™B²VšH=¡¢š~˜R§¢²~°~›RžŠ[­~›œ~¦[™Bº#¦©¨†ª šV¨Iª›
¡¯4ž4›R§¢³`¼
¡¯š4­V¡¯ž
"string_matching2"
˜8¨Ižb›!½'«{¨Iš~°Ž2¨Išs»F¨I°~°~¡¯[¡¯™BšŒ¨†§pžb4¦4¡¢š~ºBž‰œ~¦[™!®¡¢°~›R°F™Bš‡[­~›r˜R™Bªª¨Iš~°‚
§¢¡¢š~›¼¯Ä–²~žbu4­V›rž4¡¢š~ºB§¢›žbb¦[¡¢š~º
¡¯š…[­~¡¢ž˜8¨Iž4›8½ £Š¿ ­~› ¨†¦4¦[¨8»ƒž
¨Iš~°
ºB›9¡¢š~¡¯[¡’¨†§¢
¡ R›R°k¬
¡¯[­c[­~›užbb¦[¡¢š~ºBž
"bool"
2
argv[0]
argv[1]
€
`©
È
I¨ š~°
¨Iž·°~›Rž4˜9¦4¡¯±y›R°Æ¡¢š< ƒ›R˜9[¡¢™Bš ƒ£ È £¢ ¨†±y™!®› £ Áe™BšVžb›R¸ƒ²~›RšH[§¯»«
"bool"
¨I³¢[›'¦d¡¯4ž°V› Œš~¡¯4¡¢™Bš2«C[­~›·œy™B¡¢šs4›9¦®#¨†¦4¡’¨†±V§¢›
¡¯šS[­~›W¨†±y™!®›·œŒ¡¯›R˜R›™B³Š˜R™s°~›rœy™B¡¯šs[ž[™[­~› ~¦[žb
s
›R§¢›9ª›Ršs™B³¨ R›'¦[™IÅ>[›'¦[ª¡¢šV¨†[›R°„¨†¦4¦©¨R»…™B³`˜‘­V¨†¦[¨I˜9[›9¦4ž
[­V¨†˜9™#¦4¦[›Ržbœ.™BšV°~ž
4™g[­~›džbb¦[¡¢š~º
£
"bool"
¿ ­V¡¯žEºB›9[žE²~žE±Œ¨I˜[¹j[™…[­~›ž4¡¯[²V¨†[¡¯™Bšj¡¢š `¦[™Bº#¦©¨Iª ¨†³¢[›9¦·§¢¡¯šV› «¨Iš~°Ž[­~›g¦[›Rª¨I¡¯šV°~›9¦4žd™B³
±y™#[­cœ~¦[™Bº#¦©¨Iªž¨†¦[›‰¡¢°~›RšH[¡¢˜8¨I§ £
"string_matching2"
2.6.14 Goals
Dispositional.
à =[­~¡¢ž=œy™B¡¢šH8«ƒ»™B²„žb­V™B²~§¢° £R£R£
½k¹š~™!¬¬­V¨†
¨IšS¨†¦4¦[¨8»h¡¢žR«Œ¨Iš~°Y¬­V¨†
¦[¨Iš~°V™BªÍ¨I˜R˜9›Rž4ž¨Iš~°‚¡¯[›9¦[¨†[¡¢™Bš„ª›R¨Iš„¡¢š„[­~›E˜9™Bšs[›'µƒ
™B³`¨†¦4¦©¨R»ƒž
½²~šV°~›9¦4žb©¨Iš~°h[­~›œy™B¡¢šH[›9¦˜R™Bš~˜R›9œ~8«V¨Iš~°„­~™!¬ 4™W˜R™BªkœV²)[›¬¡[­„¨I°~°)¦[›Ržbž4›Rž
" ½k±y›u¨8¬¨N¦[›‰4­Œ¨Nu¼>¨Iš~°„²~šV°~›9¦4žb©¨Iš~°h¬
­s»~½e¨†¦b¦©¨R»ž¨†šV°cœy™B¡¢šH[›9¦[žªW²~žb=±y›‰²~ž4›R°„¬
¡¯[­c˜8¨†¦[›
¤ ½k¹š~™!¬Í[­V¨†W˜©­V¨†¦©¨I˜94›9¦[žk¨†šV° ¨N¦4¦©¨R»žW™B³˜©­Œ¨N¦©¨I˜9[›'¦[žg˜8¨†šJ±y›h²~ž4›R°J4™‡œy›9¦[³’™#¦4ª
œV¦4™ƒ˜R›Ržbž4¡¢š~ºW©¨†žb¹ž
±Œ¨Iž4¡¢˜[›'µƒ
½k¹š~™!¬[­V¨†¼,ªW²~§¯[¡¯°V¡¯ª›Rš~ž4¡¢™BšV¨†§_½^¨†¦4¦©¨R»ƒže™B³2®I¨†¦[¡¢¨†±V§¢›
§¢›9šVº#4­˜8¨Iš±y›™#±~©¨I¡¢š~›R°k±s»°)»šV¨Iª¡¢˜
ª›Rª™#¦4»¨I§¯§¢™ƒ˜8¨N[¡¢™Bš Operational.
Ÿ>šhœŒ¨†¦4[¡¯˜R²~§’¨†¦8«H»™B²Yž4­~™B²V§¯°…±y›u¨†±V§¢›[™ £9£8£
¼ ½¦4›8¨I°2«#²~š~°V›'¦[žb©¨Iš~°2«B¨Iš~°¨†¦4ºB²V›—¨†±y™B²)ž4¡¯ªkœŒ§¯›œ~¦[™Bº#¦[¨Iªžp¡¢šH®™B§¯®¡¯šVº¨†¦4¦[¨8»ƒž¨Iš~°Eœy™B¡¢šH[›9¦[ž
½¬¦[¡¯[›uœV¦4™Bº#¦©¨Iªž
[­V¨†°V› Œ
š~›r¨†¦4¦[¨8»h®#¨†¦4¡’¨†±V§¢›Rž™#¦‰°)»šV¨Iª¡¯˜8¨I§¢§¯»c¨†§¢§¢™ƒ˜R¨†[›g¼,ªW²~§¯[¡¯°V¡¯ª›RšÅ
ž4¡¯™BšŒ¨†§_½—¨†¦4¦©¨R»ƒž
¼
¼ " ½¬¦[¡¯[›‚œ~¦[™Bº#¦©¨Iªž[­V¨†…¦[›8¨I° ¨žb›R¸ƒ²~›Rš~˜R›Ž™B³·°V¨†©¨Æ¡¢šs4™5¨•¼>°)»ƒšŒ¨†ª¡¢˜8¨I§¢§» ¨I§¢§¢™s˜8¨†[›9°
ªr²~§¯[¡¢°~¡¢ª›Rš~ž4¡¯™BšŒ¨†§’½`¨†¦4¦©¨R» ¼ ¤ ½¬¦[¡¯[›—œ~¦[™Bº#¦[¨Iªžp[­V¨†`œy›'¦[³’™#¦[ª ž4¡¢ªkœV§¢›Š°V¨†[¨œ~¦[™s˜R›Rž4žb¡¢š~º[¨Ižb¹ž±ƒ»²~ž4¡¯šVº¦©¨Iš~°~™Bª“¨I˜R˜9›Rž4ž
¡¢šF¼>ªr²V§[¡¢°~¡¢ª›Rš~ž4¡¢™BšV¨I§¢½`¨†¦4¦©¨R»ž¨Iž[­~›uª¨IĖ™#¦e[™s™B§ ¼
½¬
¡¯[­~¡¢šgœ~¦[™Bº#¦[¨IªžR«H¡¯[›9¦©¨N[›™!®›9¦¨g¼>°)»šV¨Iª¡¢˜R¨I§¢§¯»r¨I§¯§¢™ƒ˜8¨N[›R° Eªr²V§[¡¢°~¡¢ª›Rš~ž4¡¢™BšV¨N§_½{¨†¦b¦©¨R»
±s»…²~ž4¡¯šVºrœy™B¡¢šH[›9¦¨†¦[¡¯4­Vª›'[¡¢˜
¼ Ƚ¬¦[¡¯[›‰œ~¦[™Bº#¦©¨Iªž[­V¨†œy›9¦4³’™#¦[ªˆž4¡¢ªkœV§¢›[›'µƒœ~¦[™ƒ˜R›9ž4ž4¡¢š~º©¨Ižb¹ƒž¬¡¯4­‚¨†¦4¦©¨R»ž™B³˜©­V¨†¦©¨I˜‘Å
[›'¦[ž
2.6.15 Exercises
Exercise 55
& ”j?C&H1‰(~3I%8Mg1@?.%ZI3O0Oi3B;=*,+.-r]27R39-#79&D
3BAC1¯]2A.1>f&+(„;?:
H
# include < iostream >
int main ()
{
int a [] = {5 , 6 , 2 , 3 , 1 , 4 , 0};
int * p = a;
do {
std :: cout < < * p < < " " ;
p = a + * p;
} while ( p != a );
return 0;
}
T J3B7R%Ž-)%9+`%R79&HO,OP:Hf„M9AH])]y3MI%Ž1@?C&H1*,+ 1@?.%Y]27R%RaI*b3BA.Mc]27R39-B79&D…f
*>M‡*0+y*>1>*–&HOX*
s%'(Q;=*>1@?
a
MI3BDF%·MI%‘z8Ap%R+`\'%3[Z
°~¡ ›'¦[›Ršsd+yACDFT9%R7!ME*,+
b;%MI%9%·1@?*,MŠZI3B7
*0+
n
{0, . . . , n − 1}
n=7
1@?.%‰]27R%Ra#*l3BA.M]27R39-B7'&
D m 7R3Baƒ%1@?C&H1
1@?.%‰]27R39-B79&D 14%R78D…*,+&H14%8Mr*,+51@?*,M\‘&HMI%Im
¼ ½
}MRM9AŒD‡%·1@?C&H1*,+ÆMI3BDF%]27939-B79&D…f
Exercise 56
O_%R+.-1@?
m
n
& *,a%R+¶&/aƒ&78*–&)T!O_%
a
*>Mg&+ &7879&:j3[ZdAC+(~%R7!OP:s*0+.-„1>:!]y%
int
&+(
[3 Zh1>:!]y%
;=*>1@?Jas&HOXA{%
f?.3B; \'&+ :V3BA3T!1b&*0+6&
int
0 i n
]y3B*0+214%R7
143Y1@?.%„%ROi%RDF%R+21·3[ZW*0+(~%‘
*0+
g
3 14%JFE*¥Z
f1@?*>Mr*>M&HMRGI*,+.-dZI3B7h&
i
aH
i=n
].&HM91@Ub1@?.%8pU‘%R+(]y3B*,+214%97#m i
T *,a%R+ &h]y3B*0+214%R7
143ŽM†3BD‡%S%8Oi%9D‡%R+21E*0+ fd?.3B; \‘&+L:Œ3BA 3T!1b&*0+¾1@?.%…*,+(~%‘
3[Z
1@?*,MW%8O_%RD‡%9+21 gp314%JF* Z
*,Mr&E]C&HMR1@Ub1@?.%8U‘%Ra+(]y3B*,+214%978fe1@?.%E*,+(~%©*>M(~%)e+`%'(Y&HM i m H
p
n
”‡78*>14%…\93I(~%Z979&B-BDF%R+21@Mg1@?C&H1u\93BDW]2AC14% Z97R3BD
*,+Q& F&+(
Z'7R3BD
*,+•T m
¼ ½
p
%81A.M\'&HO0O=&Y+&H1>AŒ79&HO+yACDFT9%R7
i
i
p
Å@˜R™Bªkœ.™Bž4¡¯[›*¥Z&+(Ž3B+2OP:F* Z*>1*>M(*,aI*>M9*–T!Oi%cT8:
Exercise 57 E
k
%‘~&~\R1@OX:
(* ·%R7R%9+21u]278*,DF%S+yAŒDFT9%R7!M†m `
| 3B7<
%‘)&DW]^O_%Rfu]278*0D‡%]y3B;%R7!MŽ&7R% U‘\93BDr]y3M9*>14%9f
k
&+(
H& M;‰%RO,Op&HM
&7R% ~U'\'3BDW]y3M9*,14%Im„”‡78*>14%&d]27R39-#79&D
20 = 2 2 5
1@?C&H1‚67R=
%'&)2(HMJ3+yAŒDFTR%97!M
&+(
Z'7R3BD 1@?.% *,+]2AC1j&+(1@?.%9+ k_composite.C
3BAC1¯]2A.1@M&HO,O U
n 0
k 0
\93BDr]y3M9*,14%+yAŒDFTR%97!M/*0+
m gB3 ; DF&+y: #U‘\93BDr]y3M9*>14%/+yAŒDFTR%97!M &7R%1@?.%Rk7R%
{2, . . . , n − 1}
ZI3B7
¼ ½'¼ ¤ ½
n = 1, 000, 000 H
” 78*>14%&‰]27939-B79&D
‡
1@?C&H1*,+yaƒ%R7!1@M&
DS&H1>78*_
;=*>1@?7R%‘&HO%9+21>78*b%8M†m
invert.C
3 3
A
x€?.%d]27R39-B7'&D MR?.3BA.O’(Y7R%‘&)(j1@?.%+y*0+`%DF&H1>78*_%9+21>78*b%8MZ'7R3BD 1@?.%*0+]2A.1>fd&+(S1@?.%R+ 3BAC1¯]2A.1
1@?.%·*,+yaƒ%R7!MI%·DF&H1>78*’ −1 93B71@?.%·*,+BZ†3B78DF&H1>*l3B+/1@?C&H11@?.%·DS&H1>78*_
*>Md+`31e*0+ya%R7!1>*lT8Oi% ƒm +
A
A
&)()(*>1>*l3B+yf—1@?.%]27R3'-B79&D MR?.3BACO_(Y3BAC1¯]2A.1e1@?.%·DS&H1>78*_
−1 *,+53B79(~%R7r143cO_%81=1@?.%·A.MI%R7\8?.%'\8G
;?.%81@?.%R7F1@?.%/\93BDW]2AC1b&H1>*b3B+ 3[Z„1@?.%‚*,+yaƒ%R7!MI%‚;&HM‡&~\9AA
\RAŒ79&H14% l*,+ 1@?.%Z9A.O0OX: &~\9\9AC79&H14%Æ\'&HMI%9f
1@?.%kO’&H1@14%R7d]2793I(Ap\81*>M1@?.%g*–(~%R+21>*>1>:‚DF&H1>78*’ m
Exercise 58
€
`©
| 3B7E1@?.%W\93BDr]2A.1b&H1>*b3B+3[Z1@?.%d*0+ya%R7!MI%Rf:V3BAŽ\'&+J%RDr]^Oi3B:‚Áe¦©¨†ª›9¦8Ç¥ž`¦[²~§¢›Hm}])]^OX*l%'(
`
143c1@?.%\93BDr]2A.1b&H1>*b3B+Q3[ZE1@?.%·*0+ya%R7!MI%9fe*>1e:s*l%8O’(HME1@?C&H1 −1 b1@?.%%R+21>78:j3[Z −1 *0+/7R3B;
&+(
Aij
A
i
\93OPACD…+2M h*,M-#*,a%R+•T8:
Hint:
j
A−1
ij
=
(−1)i+j
°~›9
°~›9
(Aji )
,
(A)
;?.%R7R%u°~›9
*>M·1@?.%(~%814%R78D…*,+&+21‰3[ZW&…M†z8A^&7R%DF&H1>78*_
f
&+( ij *>M·1@?.%
DS&H1>78*_
(M)
M
A
2 2
3T!1b&*0+`%'(·Z'7R3BD
T8:Ž(~%8O_%81>*,+.-h7R3B;
&+(j\93OPACD…+ m
A
x3S\93BDW]2AC14%g
1@?.%(~%814%R78D…*,+&+21d3[jZW&
DS&H1>78i*_Hfe:V3BAŽDh*i-?)1;&+21
143…A.MI%r1@?.%;%8O,OXU
3 3
GI+`3B;=+ ¨†¦b¦[²~žRÇ)¦[²~§¢›sm
¼ ½'¼ " ½'¼ ¤ ½
”‡78*>14%/&F]27R3'-B79&D
1@?C&H1W7R%‘&)(HMÆ&<MI%'zRAp%R+`\'%<3[Z
*0+214%l-)%R7!MrZ97R3BD
read_array
MR1b&+()&79(*0+]2A.1p*0+2143g&+j&7879&:~m
x€?.%+yACDSTR%R7
*>M1@?.%0e7!MR1*0+]2A.1>f&+(r1@n
?.%R+‚1@?.%Š]27R39-#79&D
%‘!].%9\81@M‡:V3BA 143J*,+]2AC1c&+`31@?.%R7
aƒ&HOXA{%8M†m }enZR14%97‡7R%‘&)(*,+.- 1@?.%
aƒ&HOPAp%8M'f1@?.%…]27R3'-B79&D
n
MR?.3BACO_(Æ3BA.1¯]2AC1u1@?.%9D *0+1@?.%…M†&DFn%S3B7'(~%R7#m Z:V3BA¾\'&+ (~3‡1@?*,M9f
:Œ3BA ?C&a%·]27R3Baƒ%R+L1@?C&H1
:V3BA &7R%„+`3ÆO_3B+.-)%R7Ž& \93BDr]^Oi%R14%Y+`3Ba#*b\'%Rf&~\9\93B7'(*,+.-Æ143/q21>7R3BA.M91>78As]`m ˆ|3B7Ž%©~&DW]^O_%Rf3B+
*,+]2AC1
1@?.%‰]27R39-B7'&D MR?.3BACO_(F3BA.1¯]2AC1
m
¼ ½'¼ " ½
Exercise 59
5 4 3 6 1 2
4 3 6 1 2
Ë+2?C&+`\'%1@?.%u]27939-B79&D
Z'7R3BD ˊV%R79\R*>MI% ‚MI3h1@?C&H11@?.%g7R%RM9A.OX1@U
read_array.C
*,+.-]27R39-B7'&D
MI3B7!1@M1@?.%Q&7879&:“%8O_%RD‡%R+21@M*,+2143&HMI\'%R+(*,+.-63B79(~%R7T9%>ZI3B7R%
3BA.1¯]2AC1@1>*,+.-h1@?.%Rsort_array.C
DFmY3BAC7rMI3B7!1>*,+.-S&HO -)3B78*>1@?D (~3#%8M+`31?C&a%W143FT9%u].&7!1>*l\RA.O’&7!OP:Ž%>‹6\R*l%R+21>f
1@?.%cDF&*,+•1@?*,+.-‡?.%R7R%c*>M1@?C&H1‰*>1u;3B7!G#MY\'3B787R%9\81@OP:~m¾x%8M91‰:V3BAC7]27R39-B7'&D 3B+MI3BD‡%cO’&7b-)%R7
*,+]2AC1@M i]27R%>ZI%979&)T!OP:F7R%‘&)(·Z9793BD 6
& =Oi%Rf&©ZR14%97k7R%'(*07R%9\R1>*,+.-FMR1b&+()&79(h*,+]2A.1 ƒm·|`3B7„%‘~&Dr]^Oi%9f
3B+<*0+]2A.1
1@?.%u]27R3'-B79&D M9?.3BA.O’(F3BAC1¯]2A.1
m
¼ ½'¼ " ½'¼ ¤ ½
Exercise 60
5 4 3 6 1 2
1 2 3 4 6
Z97R3BDÍ˗~%R7R\R*,MI% EMI3E1@?C&H1{1@?.%
7R%8M'A.OX1>*,+.-
Ë+2?C&+`\'%1@?.%]27R39-B79&D
Exercise 61
]27R39-#79&D
*,+214%R74]279%81@M1@?.%Eread_array.C
*,+]2AC1eMI%'z8A{%R+`\9%3[Z
*,+214%–-)%R7!Mk&HMr&Yœ.›9¦[ªr²~[¨†[¡¢™Bš
3[Z
cycles.C
n
π
f&+(„1@?C&H1
*>1‰3BA.1¯]2A.1@Mr1@?.%c˜9»˜9§¢›d°~›R˜R™Bªkœ.™Bž4¡¯[¡¢™BšJ3[Z m
{0, . . . , n − 1}
q`3BD‡%j%©!]^O_&+&H1>*l3B+2MS&7R%…*,+63B7'(~%R7 Fj&„]y%978DhA.1b&H1>*l3B+
*>MY&<TRπ* o#%'\81>*,aƒ%„DF&8])]2*0+.-kZ9793BD
1@?.%·MI%R1
143*>1@MI%RO Z—1@?.%R7R%,ZI3B7R%Rf=1@?.%d*,+]2A.1eM†%'z8A{π%R+`\9%\‘&+ T9%E*,+214%974]27R%814%'(S&HME1@?.%
{0, . . . , n − 1}
MI%‘z8Ap%R+`\'%j3[Zaƒ&HOPAp%8M
3[Z„&…]y%R78D…A.1b&H1>*b3B+
* Z„&+(<3B+2OP:Ž*¥Z*,1W\93B+21b&*0+2M
π
%Ra%978:S+yAŒDFT9%R7Z9793BD π(0), . . . , π(n −%‘~1)&~\R1@OX:/3B+`\9%†m
{0, . . . , n − 1}
xŠ?.%c]27R39-B7'&D
MR?.3BACO_( e7!MR1h\8?.%'\8G<;?.%81@?.%R7/1@?.%j*0+]2A.1WMI%'z8A{%R+`\9%/MN&H1>*>M%8M
cycles.C
1@?*>MF\93B+(*>1>*l3B+yf&+(/*¥Zh+`31>fr14%R78D…*,+&H14%‚;=*>1@?¾& 9\ 3B7879%8Ml]y3B+(*0+.-<DF%8MRM†&B-)%†m Z„1@?.%Y*0+]2A.1
*,+(~%'%'(S%R+`\'3I(~%8Mk&E]y%R78D…A.1b&H1>*l3B+ fŠ1@?.%]27R39-B79&D MR.
? 3BA.O’(Y3BA.1¯]2AC1e1@?.%k˜9»ƒ˜R§¢›°~›R˜9™Bªkœy™Bž4¡¯[¡¯™Bš
π
3[Z m‰} \R:V\8O_%g*,+
*>M&+y:‚MI%‘z8Ap%R+`\'%„3[Zr1@?.%Z†3B78D
M9Ap\R?F1@?C&H1
π
( n 1 n2
π
n2 = π(n1 ),
n1
n3 = π(n2 ),
...,
*,MW1@?.%gM9DF&HO0Oi%RMR1‰%ROi%RDF%R+21d&D‡3B+.-
nk = π(nk−1 )
n1 , . . . , n k
f&+(
nk )
n1 = π(nk )
f&+(
m
}‰+y:Ž\R:V\8Oi%WAC+y*–z8Ap%8OP:j(~%814%R78D…*,+`%8MW1@?.% Ulas&HOXA{%8Mc3[Zk&HO0O*>1@M%8O_%RD‡%R+21@Mu3B+<1@?.%h31@?.%R7?C&+(f
%Ra%978:„%8O_%RD‡%R+21e&8])]y%‘&7!M*,+SMI3BD‡%·\9:Œ\8O_% π b;?*b\8?kD…*0-?)1—T9%r3[Z1@?.%1>78*,a#*–&HO†ZI3B78D
f`D‡%‘&+2U
(n1 )
*,+.-Y1@?C&H1
ƒmFx€?*>Mr*,Dr]^OX*l%8Mg1@?C&H11@?.%d].%R78DhAC1b&H1>*b3B+L(~%9\'3BDW]y3MI%RMg*,+2143j&YAŒ+y*lz8A{%
π(n1 ) = n1
MI%81u3[Z\R:Œ\ROi%8MNm·|`3B7h%‘)&DW]^O_%Rf1@?.%u]y%R78D…A.1b&H1>*l3B+
π(0) = 4,
π(1) = 2,
π(2) = 3,
(~%9\'3BDW]y3M†%8MW*0+2143„1@?.%k1>;3j\9:Œ\8O_%8M
(04)
π
-B*0a%R+T8:
π(3) = 1,
&+(
π(4) = 0
(123)
t3B+2M'*l(~%R7…1@?.%cMR1>78*,+.-FDF&H14\8?*0+.-&HO -)3B78*,1@?D
m
¼
3[Z 7939-B79&D
½'¼ " ½‘¼ ¤ ½
Vm =7R3Ba%…1@?C&H1Z†3B7
Exercise 62
&HO,O
fe1@?.%R79%…%‘*>MR1@Mg&…MI%‘&7R\8?SMR1>78*,+.3[ZEO_%R+.-1@?
&+(‚&…14%‘s1 3[ZEO_%R+.-1@?
m > 1, n m
s
m
3B+Ž;?*b\8?Y1@?.%W&HOP-)3B78*,1@?D *0+ 7R3'-B79&D ]y%97@ZI3B78D„M
\'3BDW].&78*,MIt3B+2MWT9%81>;%9%Rn
+
m(n − m + 1)
M9*0+.-Oi%…\8?C&79&~\814%97!M†m
t3B+2M'*l(~%R71@?.%`Z†3O,O_3B;*0+.-]27R39-#79&D
M9*l3B+&HOŠ&7879&:Vm
Exercise 63
¼ ½
1@?C&H1—(~%)e+`%8Md&+(r*,+y*,1>*l&HOP*s%8M&W1@?7R%9%‘(*,D‡%9+2U
# include < iostream >
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
}
};
of a [0][0]
of a [0][1]
of a [1][0]
of a [1][1]
of a [2][0]
of a [2][1]
of a [3][0]
of a [3][1]
return 0;
}
”‡78*>14%<&j]27939-B79&D
1@?C&H1„%R+2?C&+`\9%8M‡1@?*>Mc]27939-B79&D T8:L& b+`%8MR14%‘( threedim_array.C
O_3#3R]1@?C&H1*,14%R79&H14%8M3Ba%R7r
1@?.%&7879&:
&+(…*>1@M·M9A^T9&7879&:sM·143F3BAC1¯]2A.1&HO,O^1@?.%
aƒ&HOPAp%8M
a
int
1@?C&H1k&7R%SMR143B7R%‘(*0+
&+(Æ*,1@MYM9A{T'&7879&:ƒMNm3Ž+`31rACMI%„79&+(~3BD &~\'\9%8M9MS1435(~3/1@?*,M‡T8A.1
]y3B*0+214%R7h&78*>1@?DF%81>*b\†m a
¼ ½
€
`©
È
”‡78*>14%/&S]27939-B79&D
1@?C&H1W7R%‘&)(HM/&14%‘s1Z97R3BD MR1b&+()&7'(<*0+]2A.1
frequencies.C
Æ&+(53BA.1¯]2AC1@M…1@?.%uZ97R%‘z8Ap%R+`\9*b%8Mj3[Zc1@?.%YO_%81@14%R7!Mh*0+L1@?.%„14%©s1>f·;?.%R7R%
;%h(~3„+`31d(*,MR1>*,+.-BAŒ*>MR?ŽTR%R1>;‰%'%R+¾O_3B;%R7„&+(YAH])]y%R7„\‘&HMI%O_%81@14%R7!M†mW|`3B71@?*>Mc%‘V%R79\R*>MI%9f:Œ3BA
DF&:&HMRM9ACDF%c1@?C&H1d1@?.%…1>:N]y%
*,DW]^O_%RDF%R+21@M}Eqt
%R+`\93†(*,+.-m•xŠ?*,MD‡%'&+2Mc1@?C&H1r&HO0O
char
\8?C&79&~\R14%R7!Mk?C&a%k*0+214%l-)%97cas&HOXA{%8MW*0+
m J3B7R%93Baƒ%R78f*,+}·qt f1@?.%kaƒ&HOPAp%RM…3[Z
127}
1@?.%
AH])]y%R7…\'&HMI%WOX*,14%R79&HOXM
As]<143{0, 1, . .&.7R,%c
\93B+2MI%'\RA.1>*0a%g+yAŒDFT9%R7!Mr*0+
.ZI3B7
26
’A’
’Z’
{65, . . . , 90}
1@?.%kO_3B;%R7„\‘&HMI%gOP*>14%979&HOM
As]J143
f1@?.%raƒ&HOPAp%g7'&+.-)%g*,M
m
¼ Ƚ
’a’
’z’
{97, . . . , 122}
²~š~š~¡¢š~ºg[­~¡¢ž
™Bš„4­V›d§¯»ƒ¦[¡¯˜Rž
™B³%8MR14%979()&:Ƽ ¿ ­~› ›R¨†[§¢›Rž[½³’™#¦›'µ)¨IªkœV§¢›‰ž4­~™B²V§¯°„»¡¢›R§¯°h[­~›
³’™B§¢§¢™!¬¡¯šVº·™B²)4œV²) £
Exercise 64
4OP*>Gƒ%…*,+ =R7 39-#79&D
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
i:
j:
k:
l:
m:
n:
o:
p:
q:
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
r:
s:
t:
u:
v:
w:
x:
y:
z:
Other :
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
xŠ?.%€Z†&~\81e1@?C&H1
&+J&787'&:h?C&HM>€V%'(cO_%R+.-1@?Y*>Mr3[ZR14%R+Ž*0+`\93B+ya%9+y*b%R+21bmE|3B7g%‘~&D„U
]^O_%Rf=*,+JˊV%R79\R*>MI% F&+(h*,+5ˊV%R7R\9*>MI%Bf=1@?.%g+yACDSTR%R7h3[Zc%ROi%RDF%R+21@Mg143FTR%g79%'&)(Y*0+2143Y1@?.%
&7879&:Æ?C&)(Ž143JT9%W]27R3BaI*l(~%'(5&HMc1@?.% e7!MR1‰*,+]2AC1d*,+63B7'(~%R7EZI3B7„1@?.%W]27R39-#79&D 143JT9%F&)T!O_%Y143
(:H+&Dh*b\‘&HO,OP:Y&HO,O_3#\'&H14%k&+J&7879&:‚3[Zu1@?.%g&8])]27R3R]278*–&H14%·Oi%9+.-1@?CmunA.1—*,+…]279&~\81>*b\'%Rf=1@?.%·O_%R+.-1@?
3[Zr1@?.%W*0+]2A.1MI%'z8A{%R+`\9%g*>M3[ZR14%R+J+`31GI+`3B;=+¾&g]278*l3B78*lm
”<%‡;3BA.O’(51@?.%R79%>ZI3B7R%‡OX*,Gƒ%j143;=78*>14%&F]27R39-B7'&D 1@?C&H1g79%'&)(HMŽ&5MI%‘z8Ap%R+`\'%J3[Z‚*,+214%–-)%R7!M
Z9793BD MR1b&+()&79(S*0+]2A.1*,+2143Ž&+L&7879&:Hf;?.%R7R%1@?.%O_%R+.-1@? 3[Zk1@?.%MI%‘z8Ap%9+`\9%*>Mg+`31GI+`3B;=+
TR%,ZI3B7R%8?C&+( ‘&+(+`31C].&7!1—3[Z
1@?.%
*,+]2A.1 1@?.%€]27R39-#79&DˆMR?.3BACO_(EM9*,Dr]^OX:7R%‘&)(3B+`%+yACDSTR%R7
&©ZR14%97…&+`31@?.%R7kAŒ+21>*>O`1@?.%gMR1>7R%'&D TR%'\93BD‡%RMh%RDW]^1>:~m
+`%Y]y3M9M9*lT!O_%ŽMR1>7'&H14%l-B:¾*,Mj143L(:s+&D…*b\‘&HO,OP: &HO0Oi3#\‘&H14%J&+w&7879&: 3[Z‡O_&7l-)%ÆOi%R+.-B1@?fST8*i%R+`3BAV-?‡143YM9143B7R%…&+y:]y3MRM'*lT!O_%W*0+]2A.1MI%'z8A{%R+`\9%†mrnA.1* Zr1@?.%kMI%‘z8Ap%R+`\'%k*>MrMR?.3B7!1>f1@?*>M*>M&
?AŒ-%c;&HMR14%‚3[ZkDF%RD‡3B78:HfE&+(F*¥Z1@?.%cMI%‘z8Ap%R+`\'%…*,Mka%R78:/O_3B+.-Bf1@?.%Y&7879&:jD…*0-?)1‰MR1>*>O0O€+`31
TR%gO_&7l-)%h%R+`3BAV-?Cm
Exercise 65
& ” 78*>14%&]27R39-#79&D
‡
1@?C&H17R%‘&)(HMk&hM†%'z8A{%R+`\9%c3[ZE*,+214%–-)%R7!M3[ZEAŒ+2GI+`3B;=+
read_array2.C
O_%R+.-1@? *,+2143L&+w&7879&:HfS&+(•1@?.%R+À3BA.1¯]2AC1@Mj1@?.%ÆMI%'z8A{%R+`\9%†m x€?.%„]27R39-B7'&D MR?.3BA.O’(
M†&H1>*,M,Z9:„1@?.%
ZI3O0Oi3B;=*0+.-„1>;3W]2793R]y%R7!1>*b%RM†m
b* x€?.%L&D‡3BAŒ+21/3[ZQ(:s+&D…*b\‘&HO,OP: &HO,O_3#\‘&H14%'(6DF%RD‡3B78: *,+ A.M†%¾T8:61@?.%Ž]27R39-#79&D
9M ?.3BA.O’(Y&H1
&+y:h1>*0D‡%kTR%gœV¦4™#œy™#¦4[¡¢™BšV¨I§)[™E4­V›
šƒ²~ªr±.›9¦e™B³yž4›R¸s²~›Rš~˜R››R§¢›Rª›RšH[ž€4­Œ¨N
­V¨R®›±y›R›Ršc¦[›8¨I°cž4™³_¨†¦Imcx3YT9%c\'3B+`\R7R%814% F1@?.%R7R%DhACMR1TR%&]y3M9*,1>*,a%\93B+2M91b&+21
a
È 'M Ap\8?j1@?C&H1+`3„D‡3B7R%g1@?C&+
\9%RO,OXMh3[Z(:s+&D…*b\'&HO0OX:j&HO0Oi3I\'&H14%'(SDF%RD‡3B78:Ž&7R%W*,+
ak
ACMI%g;?.%R+
%8O_%RD‡%R+21@Mg?C&a%cT9%9%R+ 7R%‘&)(f
m‚”<%g79%>ZI%R7143„1@?*>M]27R3R]y%R7!1>:Ž&HM
k
k 1
žlœC¨†˜R›d› g˜R¡¢›Rš~˜9»^m 1u%9+2M9AC7R%RMg1@?C&H1d%Raƒ%R+5a%R78:SO_3B+.-YMI%‘z8Ap%R+`\'%8Mh\‘&+TR%k79%'&)( bAH]
143„1@?.%…&8])]^OP*b\'&)T8Oi%WD‡%RDF3B78:FOP*,D…*>1@M #fTRA.11@?C&H1M9?.3B7!1
MI%‘z8Ap%R+`\'%8M„\93B+2M'ACD‡%…3B+2OX:
OP*>1@1@O_%kDF%RD‡3B78:~m
b*,* x€?.%h+yAŒDFT9%R7Ž3[ZY&HMRM9*0-#+yD‡%R+21@M 93[Zaƒ&HOPAp%8M…143<&7879&:5%8O_%RD‡%9+21@M „]y%R7@Z†3B78D‡%‘(/MI3
ZN&7MR?.3BA.O’(k&H1Š&+y:g1>*,D‡%uTR%—]27R3R]y3B7!1>*l3B+&HOC1431@?.%+yAŒDFTR%97r3[Z
MI%'zRAp%R+`\'%r%ROi%RDF%R+21@M
1@?C&H1‰?C&a%YTR%'%R+79%'&)(‡MI3Z†&78f;=*>1@?Æ1@?.%M†&DF%cDF%'&+y*0+.-3[Zu]27R3R]y3B7!1>*b3B+&HOP*>1>:Æ&HM
&)T93Ba%Imh”<%7R%>Z†%R71431@?*>M]27R3R]y%R7!1>:c&HM‰[¡¯ª›› k˜R¡¢›9šV˜'»{m 1—%R+2M9AŒ7R%8M1@?C&H1`1@?.%—]2793U
-#79&D *,Mc3B+2OP:ŽT8:j&j\'3B+2MR1b&+21Z†&~\R143B7kMRO_3B;%R71@?C&+51@?.%]27R39-B7'&D
read_array.C
1@?C&H1
GI+`3B;Mg1@?.%WMI%'z8A{%R+`\9%O_%R+.-1@?F*,+•&)(as&+`\9%Im
T 
%814%R78D…*,+`%1@?.%E\'3B+2MR1b&+21@M·3[Z]2793R]y3B7!1>*b3B+&HOP*>1>:
Z†3B7—]27R3R]y%R7!1>*l%8M b* g&+( b*0* k3[Z:Œ3BAŒ7
a
]27R3'-B79&DFm
|`3B7„O’&7b-)%R7u3#3B7!M9f 7R3'-B79&D
Æ\'&+6T9%9\93BDF%jz8AC*,14%…*0+`%>‹6\R*l%R+21>f·M9*0+`\9%F%Ra%R78:
Exercise 66
MR14%b]
%‘~&D…*,+`%8MS¨I§¢§E\'%8O,OXMF3[Z1@?.% d3#3B7…*,+ 3B79(~%R7Y143 e+(/1@?.% i]y3MRM9*–T!OX:Žaƒ%R78:ZI%R; 3B+`%8M
i
1@?C&H1d?C&aƒ%…143ÆTR%…O_&)T9%8O_%'(Ž;=*>1@?
*0+¾1@?C&H1‰MR14%b]`mY} TR%81@14%97‚MI3OXAC1>*b3B+ ;3BA.O’(T9%„143Æ%‘~&D…*,+`%
i
3B+2OP:Ž1@?.%…+`%9*0-?CT93B7!M‚3[Z1@?.%‚\'%8O,OXM…1@?C&H1·&7R%‚&HOX79%'&)(:/O’&)TR%8O_%'(‡;*,1@?
f‰M9*0+`\9%‚3B+2OP:/1@?.%8MI%
i−1
&7R%…\'&+(*l()&H14%RMZ†3B7W-)%81@1>*0+.-‚O’&)TR%8O m
i
”‡78*>14%&r]27939-B79&D
1@?C&H17R%‘&HOX*
s %8M1@?*>M·*–(~%'&f
&+(…D‡%‘&HM9AC7R%W1@?.%
shortest_path_fast.C
]y%R7@Z†3B78DF&+`\'%W-&*0+¾3B+JMI3BDF%gO’&7b-)%97d3#3B7!M3[Z:Œ3BAŒ7…\R?.3B*b\9%†m
xŠ?.%
=O_%—ZI3B78DS&H1—*>MW&Z†3B78DF&H1.Z†3B7MR143B78*,+.-DF3B+`3#\8?7R3BDF%
'T!O’&~\8G ;?*,14% *,DS&B-)%8M†m/x€?.%Z†3BXBM
78DF&H1*>MkM†3BD‡%R;?C&H1·3BA.1b()&H14%‘(fET8A.1DF&+y:ÆT87R3B;MI%R7!M +214%R78+`%81dˊ!]^O_3B7R%R7
*>M&„+`31b&)T8Oi%…%‘V\9%l]^1>*b3B+ j\‘&+5MR1>*,O,OŠ(*>M–]^O_&:„*0DF&B-)%RMr*0+
ZI3B78DS&H1bm
XBM
}‰+
*,DS&B-)% =O_%gZ†3B7&+ *,DF&B-%‡+&D‡%‘(
Dh*i-?)1gO_3#3G<OP*>Gs%j1@?*>M 41b&HGƒ%9+JZ97R3BD
test
”‡*>GI*X]y%'(XBM
*–&`Ì M
].&B-)% ƒm
Exercise 67
XBM
# 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 };
}M:Œ3BAL\‘&+-BAp%RMRMZ97R3BD 1@?*>M9f
=O_%8MY&7R%S(~%RM9*0-B+`%‘(/143T9%h*0+214%l-B79&H14%‘(Æ*,+21435tÍ&+(
XBM
t vWv MI3BAŒ7R\9%c\93I(~%W;?*b\8?‚DF&HGƒ%RMr*,1u
%'&HM':‚143W]27R3#\'%8MRMr1@?.%RD 41@?.%R7R%r*>M·+`3h+`%'%'(S143c7R%'&)(„*,+
1@?.%‚()&H1b& dM9*0DW]^OP:j*,+`\ROXA^(~%…1@?.%.=O_%uZ'7R3BD 1@?.%jtvrv ]27R39-B79&D 1@?C&H1u+`%'%'(HMc143…]27R3I\9%8MRM…1@?.%
*,DS&B-)% m +•3BAC7h%©~&DW]^O_%Rf
&+(
(~%R+`314%g1@?.%W;=*–(H1@?Æ&+(„?.%R*0-?)1
test_width
test_height
3[Z1@?.%*,DS&B-)%W*0+S]2*’V%8OXM†mu|`3B78DF&HO,OP:Hf=1@?.%8MI%r+&D‡%8Mk&7R%cª¨I˜9¦4™Bž9f
T8AC1*0+<1@?.%]27R39-B7'&D 1@?.%9:
\'&+ T9%ŽA.MI%‘(QOX*,Gƒ%J\'3B+2MR1b&+21Y%‘!]27R%8M9M9*b3B+2M†m
*>M/&+ &7879&: 3[Z\8?C&7'&~\814%R7!MŽ1@?C&H1
%R+`\'3I(~%8M‚1@?.%j\93O_3B7!Mj3[Z…1@?.%
]2*_V%ROMh*0+ test_bits
1@?.%„*,DS&B-)%ImJËa%978:¾­~›'µ~¨†°V›9˜R¡¢ª¨I§§¢¡¯4›9¦©¨I§3[Z
7
1@?.%ZI3B78D
%R+`\'3I(~%8M‚%R16
*0-?) 1—]2
*’V%8OXM9f;?.%R7R%c1@?.%Y3B79(~%R7c*>MW7R3B;ÍT8:F7R3B;m + 3BAŒ7Y\'&HMI%9f
&+( 0xd1 d%R2+`\'3I(~%r1@?.% u]2*_~%8OMW3[Zd1@?.*
% e7!MR1€7R3B;=f—;?*>O_%
&+(
&7R%—Z†3B71@?.%
0x13
0x00
0x15
0x00
MI%'\93B+(Y7R3B;=f‰%814\Im
€
`©
È
g%R7R%*>M=?.3B;&d1>;3U‘(*0-#*>1?.%‘)&)(~%9\R*0DF&HO)OP*>14%R79&HOy%R+`\'3I(~%8M1@?.%u\'3Oi3B7!M3[Z%R*0-B?)1€\93B+2M†%9\RAC1>*,a%
]2*_~%8OM…;*,1@?*,+¶&/7R3B;m Ë=a%R78:<?.%‘~&)(~%9\9*,DF&HO(*0-B*,1
*>MdZ'7R3BD 1@?.%‚M†%81
di
{0, ..., 9, a, . . . , f}
;?.%R7R%
As]J143
MR1b&+(dZI3B7
m…x€?.%&~\81>A{&HO`+yACDSTR%R7h%R+`\93I(~%‘(ŽT8:Ž
&Y?.%‘)&)(~%9\R*0DF&HO
f
10, . . . , 15
OP*>14%R79&HO`a*,M
m |`3B7h%‘~&Dr]^Oi%9f
?C&HM·aƒ&HOPAp%
m
16d1 + d2 {0, . . . , 255}
0x13
1 15 + 3 = 19
g3B;=fh&+y: +yACDSTR%R7Ž*0+
?C&HM/&T8*,+&78: 7R%b]279%8MI%R+21b&H1>*l3B+ ;=*,1@?
T8*,1@M†m
f
ZI3B7Y%©~&DW]^O_%Rf?C&HMcT8*,+&78:S7R{0,
%b]27R.%R.MI.%R, +2255}
1b&H1>*b3B+
mSxŠ?.%d]2*’V%8O=\93O_3B7!M…&7R%Y38T!1b&*0+`%'(/19
T8:
7R%‘&)(*,+.-‚1@?*,MT'&~\8GI;&79(HM9f‰&+(„*,+214%974]27R%81>*,+.- 00010011
&HMT8O_&~\8G‚&+(
&HM;?*>14%Im„xŠ?ACM9f1@?.% e7!MR1
1
0
%R*i-?)1€]2*_~%8OM*,+7R3B;
3[Z1@?.%
*,DS&B-)%…&7R%T!O’&~\8GIfT!O’&~\8GIf=;?*>14%Rf;?*>14%RfT!O’&~\8GIf;?*>14%Rf
;?*>14%Rf=;?*>14%†m„x€?.%…\'13BDW]^O_%814% test *,DS&B-)%gO_3#3G#MrOP*>Gƒ%g1@?*>M F
test
” 78*>14%E&]27R3'-B79&D
‡
1@?C&H1
M&+
=Oi%E3[Z:V3BAC7E\8?.3B*l\9%
l:Œ3BAcDF&:rMI%‘&7R\8?
xbm.C
#include
XBM
1@?.%;%ITW143!e+(…M9AŒ*>1b&)T!O_%
=O_%8M Bf&+(h1@?C&H13BA.1¯]2AC1@Mg&+
=Oi%=Z†3B71@?.%WMN&D‡%·*,DS&B-)%Rf
XBM
¦[™#©¨N[›R°…±s» °~›Rº#¦4›R›Rž†mhxŠ?.
%]27R39-#79&D DS&:„;=78*>14%W1@?.%W79%8M9A.OXXBM
1>*,+.-!=O_%g143…MR1b&+()&79(‡3BA.1¯]2A.1bm
+5\'&HM†%3[ZE1@?.%
*0DF&B-)%9fe1@?.%E7R%8M'A.OX1>*,+.=O_%g&+(c1@?.%·7R%RM9A.OX1>*,+.-7R31b&H14%‘(h*0DF&B-)%W&7R%
test
XBM
&HM=ZI3O,O_3B;M†m
# 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 };
g314%r1@?C&H1e;‰%+`3B;?C&a%
*,+2MR14%‘&)(‡3[Z Ž?.%‘)&)(~%9\R*0DF&HOpOP*>14%979&HOMNmhx€?*>ME*,MW(Ap%143…1@?.%
Z†&~\R1—1@?C&H1
%'&~\R?‡3[Z‰1@?.% W793B;M‰+`%9%‘(HMg3B+`%EOP*>14%R7'&HOZ†3B7d*,1@M ]2*’V%8OXM9f;?.%97R%·1@?.%EO_%'&)(*0+.-hT8*,1@M
3[Zr1@?.%cTR*,+&78:‚7R%b]27R%RMI%R+21b&H1>*b3B+2Mc&7R%…T9%R*,+.-h*0-B+`3B7R%‘()m
3BA‡DF&:S%‘s14%9+(h:V3BAC7]27R39-#79&D 143·]y%R7@ZI3B78D 31@?.%R7WGI*,+(HMg3[Zu*,DS&B-)%]27R3#\'%8MRM9*0+.-h1b&HM9G#M
3[ZY:V3BAC7Æ\8?.3B*b\'%Im ˗)&DW]^O_%8MS*0+`\8OPA{(~%Æ\93O_3B7‡*,+yaƒ%R7!M9*b3B+ b7R%l]^O_&~\'%T!O’&~\8G/;*,1@?•;?*>14%9f…&+(
a#*l\9%a%R7!MN& BfE\93BDr]2A.1>*0+.-Ž&FD…*,787R3B7*0DF&B-)%9fMI\'&HOP*,+.-S1@?.%*0DF&B-)% bMI3‚1@?C&H1*>1E3#\'\RAs]2*l%8MOi%RMRM
3B7gDF3B7R%u]2*’V%8OXM Bf%814\†m
$
3?$&'5J$
1)$
$
(+&
3
$
(
"01>:9KHH@>3
/$%"AKG(K
K"#11(#I1+K"
3() 9
$@1" 0$159
+
HH)(+
3
G88 1()5G<
-B/
char
$N+41JID()"?
$0";'1""K9%1:"?$N2QH(+NI1+K
{−128,
. . . , 127}
α
&'$)$ $N
"M$@#")+9: (("; *K5(7 &7O "'19%@9:;<
$@1"?I1+K@2(+8D
α − 256
()8D(