Newsgroups: fj.archives.answers,fj.lang.c
Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!newsgate1.web.ad.jp!newsbase.nisiq.net!news1.nisiq.net!newsfeed.btnis.ad.jp!nspixp!spinnews!spin-hsd0-tky!yhqfm!xeroc!leia!133.140.40.2!kitano
From: kitano@crd.yokogawa.co.jp (Kinichi - Kinchan - Kitano)
Subject: comp.lang.c Answers to Frequently Asked Questions (FAQ List) in Japanese[2/4]
Sender: news@leia.pa.yokogawa.co.jp (Leia news server)
Message-ID: <KITANO.97Jul15022959@crd.yokogawa.co.jp>
Supersedes: <KITANO.96Feb26184429@SDA.crd.Yokogawa.CO.JP>
Date: Mon, 14 Jul 1997 17:29:59 GMT
Reply-To: kitano@crd.yokogawa.co.jp
Organization: Yokogawa Electric Corporation, Tokyo, Japan.
Followup-To: fj.lang.c
Lines: 1283
Xref: galaxy.trc.rwcp.or.jp fj.archives.answers:1287 fj.lang.c:1209
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.lang.c&nb=1209&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

Archive-name: c-faq-j/part2
Last-modified: 14 July. 1997


========================= C FAQ $BF|K\8lLu(B[(B2(J/4](B (J=========================(B

6$B>O(B $BG[Ns$H%]%$%s%?(B

6.1:$B$"$k%=!<%9%U%!%$%k$G(Bchar a[6]$B$HDj5A$7$F!"JL$N%U%!%$%k$G(Bextern
char *a$B$H@k8@$7$?!"$J$<$3$l$O$&$^$/$$$+$J$$$N$+!#(B

A:extern char *a$B$H$$$&@k8@$,!"<B:]$NDj5A$H?)$$0c$&$+$i$G$"$k!#(B
$B!V%?%$%W(BT$B$X$N%]%$%s%?!W$O!V%?%$%W(BT$B$NG[Ns!W$H$O0[$J$k!#(Bextern
char a[]$B$r;H$(!#(B

References: ANSI Sec. 3.5.4.2; ISO Sec. 6.5.4.2; CT&P Sec. 3.3
pp. 33-4, Sec. 4.5 pp. 64-5.

6.2:$B$G$b(Bchar a[]$B$O(Bchar *a$B$HF1$8$HJ9$$$?$3$H$,$"$k$,!#(B

A:$BA4A3JL$N$b$N$G$"$k!#(B($B7/$,J9$$$?$N$O!"4X?t$N2>0z?t$NOC$@!#<ALd(B
2.4$B;2>H(B)$B!#G[Ns$O%]%$%s%?$H0c$&!#G[Ns$N@k8@!V(Bchar a[6]$B!W$O(B6$BJ8;z(B
$BJ,$NNN0h$r3NJ]$7$F!"$=$l$r!V(Ba$B!W$H$$$&L>A0$G<1JL$9$k$3$H$rMW5a(B
$B$9$k!#$9$J$o$A!V(Ba$B!W$H$$$&L>A0$N>l=j$,$"$C$F!"$=$3$K$O(B6$BJ8;z$r<}(B
$B$a$k$3$H$,$G$-$k!#0lJ}!"%]%$%s%?$N@k8@!V(Bchar *p$B!W$O%]%$%s%?$r(B
$B<}$a$k>l=j$rMW5a$9$k!#%]%$%s%?$O(Bp$B$H$$$&L>A0$G<1JL$5$l!"$[$H$s(B
$B$I$I$s$J$b$N$G$b;X$9$3$H$,$G$-$k!#$I$s$J(Bchar$B!"$"$k$$$OO"B3$7$?(B
char$B$NNs$r;X$9$3$H$b$G$-$k$7!"$I$3$b;X$5$J$/$F$b9=$o$J$$(B($B<ALd(B
5.1$B$H(B1.30$B;2>H(B)$B!#(B

$BNc$K$h$C$F!"I4J9$O0l8+$KG!$+$:$G$"$k!#J8(B

char a[] = "hello";
char *p = "world";

$B$O0J2<$N$h$&$KI=8=$G$-$k%G!<%?9=B$$r=i4|2=$9$k!#(B

   +---+---+---+---+---+---+
a: | h | e | l | l | o |\0 |
   +---+---+---+---+---+---+
   +-----+     +---+---+---+---+---+---+
p: |  *======> | w | o | r | l | d |\0 |
   +-----+     +---+---+---+---+---+---+

x[3]$B$r;2>H$7$?$H$-$K;:$_=P$5$l$k%3!<%I$,!"(Bx$B$,%]%$%s%?$+G[Ns$+(B
$B$G0c$&$N$@$HM}2r$9$k$3$H$OBg;v$J$3$H$G$"$k!#>e5-$N@k8@$rM?$($i(B
$B$l$?$H$7$F!"%3%s%Q%$%i$O(Ba[3]$B$H$$$&<0$r8+$?$H$3$m$G!"!V(Ba$B!W$N$H(B
$B$3$m$+$i;O$a$F!"$=$3$+$i(B3$B$D?J$s$G!"$=$3$K$"$kJ8;z$r<h$j=P$9!"(B
$B$H$$$&%3!<%I$r$O$-$@$9!#(Bp[3]$B$H$$$&<0$r8+$k$H!"!V(Bp$B!W$K?J$_!"$=(B
$B$3$KB8:_$9$k%]%$%s%?$NCM$r<h$j=P$7!"%]%$%s%?$NCM$K(B3$B$r2C$(!":G(B
$B8e$K%]%$%s%?$,;X$9>l=j$+$iJ8;z$r<h$j=P$9!"$H$$$&%3!<%I$r$O$-$@(B
$B$9!#8@$$49$($l$P(Ba[j]$B$O(Ba$B$H$$$&L>A0$N%*%V%8%'%/%H(B($B$N@hF,(B)$B$+$i(B3$B$D(B
$BL\$N>l=j$G!"(Bp[3]$B$O(Bp$B$,;X$9%*%V%8%'%/%H$+$i(B3$B$DL\$N>l=j$G$"$k!#>e(B
$B$NNc$G$O(Ba[3]$B!"(Bp[3]$B$O$?$^$?$^F1$8J8;z(B'l'$B$r;X$9$,%3%s%Q%$%i$O$=(B
$B$3$K$?$I$jCe$/$N$KJL$NF;$r$?$I$k$N$G$"$k!#(B($BK\<AE*$J0c$$$O!"(Ba$B$N(B
$B$h$&$JG[Ns$NCM$H(Bp$B$N$h$&$J%]%$%s%?$NCM$O<0$N$I$3$G$"$i$o$l$h$&(B
$B$HJL$NJ}K!$G7W;;$5$l$k$H$$$&$3$H$G$"$k!#<!$N<ALd$G$5$i$K@bL@$9(B
$B$k$h$&$K!"E:;zIU$1$5$l$F$h$&$H$J$/$F$b!#(B)

References: K&R2 Sec. 5.5 p. 104; CT&P Sec. 4.5 pp. 64-5.


6.3:C$B$G(B"$B%]%$%s%?$HG[Ns$OF1Ey(B"$B$H$$$&$N$O2?$r0UL#$7$F$$$k$N$+!#(B

A:C$B$K$*$1$k%]%$%s%?$K4X$9$k:.Mp$NB?$/$O!">e$NJ8$N8m2r$+$iMh$F(B
$B$k2DG=@-$,$"$k!#G[Ns$H%]%$%s%?$,(B"$BF1Ey(B"$B$H$$$C$F$b!"$3$N(B2$B$D$,(B
$B$^$C$?$/F1$8$H$+8r492DG=$G$"$k$H$$$&$3$H$O0UL#$7$F$$$J$$!#(B

"$BF1Ey(B"$B$H$$$&$N$O!"$3$NLdBj$r2r$/<j3]$+$j$K$J$k0J2<$NDj5A$r;X$7(B
$B$F$$$k!#(B

$B<0Cf$K8=$o$l$k7?!V(BT$B$NG[Ns!W$H$$$&:8JUCM(B(3$B$D$N(B
$BNc30$r=|$$$F(B)$B!"G[Ns$N:G=i$NMWAG$r;X$9%]%$%s%?(B
$B$K0UL#$,3J2<$2$K$J$k!#7k2L$H$7$F$G$-$k%]%$%s%?(B
$B$N7?$O!V(BT$B$X$N%]%$%s%?!W$H$J$k!#(B

(3$B$D$NNc30$H$O!"G[Ns$,(Bsizeof$B$N0z?t$H$J$k$H$-!"%"%I%l%91i;;(B
$B;R(B&$B$N0z?t$H$J$k$H$-!"(Bchar$B7?$NG[Ns$rJ8;zNs%j%F%i%k$G=i4|CM$9(B
$B$k$H$-!"$G$"$k(B)$B!#(B

$B$3$NDj5A$K$h$j!"1i;;;R(B[]$B$rG[Ns$K;H$C$F$b!"%]%$%s%?$K;H$C$F$b(B
$B$?$$$7$F0c$$$O$J$$!#(B a[i]$B$H=q$$$?$H$-!">e$N5,B'$K$h$jG[Ns$N;2(B
$B>H!V(Ba$B!W$O%]%$%s%?$X$H@.$j2<$,$k!#$3$l$G%]%$%s%?JQ?t$KBP$7(B
$B$F(Bp[i]$B$H=q$/$N$HF1$8$3$H$K$J$C$F$7$^$C$?(B($B$?$@$7<ALd(B6.2$B$G@bL@$7(B
$B$?$h$&$K!"%a%b%j$N%"%/%;%9$N$7$+$?$O0[$J$k$+$b$7$l$J$$(B)$B!#G[Ns(B
$B$N%"%I%l%9$r%]%$%s%?$KBeF~$9$k$3$H$K$J$C$?$i!"(B

p = a;

p[3]$B$H(Ba[3]$B$OF1$8MWAG$r;X$9!#(B

$B<ALd(B6.8$B$b;2>H$N$3$H!#(B

References: K&R1 Sec. 5.3 pp. 93-6; K&R2 Sec. 5.3 p. 99; ANSI
Sec. 3.2.2.1, Sec. 3.3.2.1, Sec. 3.3.6; ISO Sec. 6.2.2.1,
Sec. 6.3.2.1, Sec. 6.3.6; H&S Sec. 5.4.1 p. 124.

6.4:$B$=$l$G$O$J$<4X?t$N2>0z?t$G$OG[Ns$H%]%$%s%?$N@k8@$,8r49$G$-$k(B
$B$N$+!#(B

A:$B$=$N$[$&$,JXMx$@$+$i$@$H9M$($i$l$F$$$k$+$i$G$"$k!#(B

$BG[Ns$O$9$0$K%]%$%s%?$K@.$j2<$,$k$N$G!"G[Ns$,<B:]$K4X?t$KEO$k(B
$B$3$H$O$J$$!#%]%$%s%?0z?t$rG[Ns$N$h$&$K8+$;$F@k8@$9$k$3$H$r5v(B
$B$9$N$O!"G[Ns$,EO$5$l$?$h$&$K8+$;$k$?$a$G$"$k!#%W%m%0%i%^$O2>(B
$B0z?t$,@N$+$iG[Ns$N$h$&$K07$o$l$k$H$+!"G[Ns$,(B($B87L)$K8@$($PG[Ns(B
$B$N%"%I%l%9$@$,(B)$B@N$+$iEO$5$l$k$H$$$&$3$H$r6/D4$7$?$$$N$+$b$7$l(B
$B$J$$!#%3%s%Q%$%i$KET9g$,$$$$$h$&$K!"G[Ns$N$h$&$K(B"$B8+$($k(B"$B2>0z?t(B
$B@k8@$O!"0J2<$KNc$r5s$2$k$h$&$K(B

f(a)
char a[];
{ ... }

$B$9$Y$F%3%s%Q%$%i$K$h$C$F%]%$%s%?$,EO$5$l$?$+$N$h$&$K07$o$l$k!#(B
$B$J$<$J$iG[Ns$,EO$5$l$?$H$-$K!"4X?t$,<B:]$K<u$1<h$k$N$O%]%$%s%?(B
$B$G$"$k$+$i$G$"$k!#(B

f(a)
char *a;
{ ... }

$B$3$NJQ49$O!"4X?t$N2>0z?t$N2>0z?t@k8@$G$N$_M-8z$G$"$k!#$=$NB>$N(B
$B>l=j$G$O5/$3$i$J$$!#$3$NJQ49$,5$$K?)$o$J$$$J$i;H$o$J$1$l$P$h$$!#(B
$B4X?t$N8F$S=P$7$d4X?tFb$G$N;H$$J}$K@k8@$r;w$;$k$3$H$K$h$k>.$5(B
$B$JMxE@$h$j$b!"$=$l$,0z$-5/$3$9:.Mp$N$[$&$,Bg$-$$$H9M$($k?M$OB?(B
$B$$!#(B

$B<ALd(B6.21$B$b;2>H$N$3$H!#(B

References: K&R1 Sec. 5.3 p. 95, Sec. A10.1 p. 205; K&R2
Sec. 5.3 p. 100, Sec. A8.6.3 p. 218, Sec. A10.1 p. 226; ANSI
Sec. 3.5.4.3, Sec. 3.7.1, Sec. 3.9.6; ISO Sec. 6.5.4.3,
Sec. 6.7.1, Sec. 6.9.6; H&S Sec. 9.3 p. 271; CT&P Sec. 3.3 pp.
33-4.

6.7:$B$I$&$7$FG[Ns$OBeF~$G$-$J$$$N$K:8JUCM(B(lvalue)$B$J$N$+!#(B

A:ANSI C$B5,3J$O!VJQ992DG=$J:8JUCM(B(modifiable lvalue)$B!W$rDj5A$7$F(B
$B$$$k!#$=$NCf$KG[Ns$OF~$C$F$$$J$$!#(B

References: ANSI Sec. 3.2.2.1 p. 37.

6.8:$B<B:]$N$H$3$m!"G[Ns$H%]%$%s%?$N0c$$$O!#(B

A:$BG[Ns$O<+F0E*$KNN0h$r3d$jIU$1$k!#$?$@$7JL$N>l=j$K0\$7$?$jBg$-$5(B
$B$rJQ$($k$3$H$O$G$-$J$$!#%]%$%s%?$O!"$I$3$+$K3d$jIU$1$i$l$?(B
$BNN0h(B($B$?$V$s(Bmalloc()$B$r;H$C$F3d$jIU$1$?NN0h(B)$B$r;X$9%"%I%l%9$rL@<((B
$BE*$KBeF~$7$J$1$l$P$J$i$J$$!#$=$N$+$o$j9%$-$J$h$&$KCM$rJQ$($k$3(B
$B$H$,$G$-$k(B($B$9$J$o$AJL$N$b$N$r;X$9$3$H$,$G$-$k(B)$B!#$^$?%a%b%j%V%m%C(B
$B%/$r;X$90J30$K$b?'!9$H;H$$F;$,$"$k!#(B

$BB/$K$$$&G[Ns$H%]%$%s%?$,F1Ey(B($B<ALd(B6.3$B;2>H(B)$B$K$h$j!"G[Ns$H%]%$%s(B
$B%?$,F1$8$K8+$($k>l9g$,B?$$!#FC$K(Bmalloc()$B$K$h$j3d$jIU$1$?NN0h$r(B
$B;X$9%]%$%s%?$,!"$7$P$7$PK\J*$NG[Ns$N$h$&$K(B($B<B:](B[]$B$r;H$C$F;2>H(B
$B$9$k$3$H$,$G$-$k(B)$B07$o$l$k!#<ALd(B6.14$B$H(B6.16$B$r;2>H$N$3$H(B($B$?$@$7(B
sizeof$B$K$OMWCm0U(B)$B!#(B

$B<ALd(B1.32$B$H(B20.14$B$r;2>H!#(B

6.9:$BG[Ns$H$ODj?t%]%$%s%?$K$9$.$J$$$H@bL@$7$F$/$l$??M$,$$$?!#(B

A:$B$=$l$O$A$g$C$H$b$N$4$H$rC1=c$K9M$($9$.$G$"$k!#G[Ns$NL>A0$O!"L>(B
$BA0$K$OBeF~$G$-$J$$$H$$$&E@$G(B"$BDj?t(B"$B$G$"$k$,!"<ALd(B6.2$B$N5DO@$H?^(B
$B$r8+$l$PG[Ns$,%]%$%s%?$G$J$$$3$H$O$O$C$-$j$9$k$@$m$&!#<ALd(B6.3
$B$H(B6.8$B$r;2>H!#(B

6.11:5["abcdef"]$B$H$$$&<0$r4^$s$@%8%g!<%/$N%3!<%I$r8+$?$3$H$,$"$k!#(B
$B$I$&$7$F$3$N<0$,(BC$B8@8l$GJ8K!>e@5$7$$$3$H$K$J$k$N$+!#(B

A:$BG[Ns$NE:;z1i;;;R(B[]$B$NFs$D$N%*%Z%i%s%I$O8r492DG=$G!"(BY[X]$B$H=q$$$F(B
$B$b(BX[Y]$B$H=q$$$F$bF1$80UL#$K$J$k$H$$$&$N$r$4B8CN$J$$(B?  $B$3$N4qL/(B
$B$J;v<B$O!"G[Ns$NE:;zIU$1$N%]%$%s%?$NDj5A$+$i$-$F$$$k!#$9$J$o$A!"(B
$B0lJ}$,%]%$%s%?$rI=$9<0$G!";D$j$,@0?t$G$"$k8B$j!"$I$s$J(Ba$B$H(Be$B$r$b$C(B
$B$F$-$F$b!"(Ba[e]$B$O(B*((a)+(e))$B$HF1$8$b$N$G$"$k$H$$$&Dj5A$G$"$k!#$3(B
$B$N$H$s$G$b$J$$8r492DG=@-$O!"$h$/(BC$B8@8l$K$D$$$F07$&J8>O$NCf$G!"(B
$B8X$i$7$/;W$&$+$N$h$&$K5-=R$5$l$F$$$k$,9q:]Fq2r(BC$B%W%m%0%i%`%3%s(B
$B%F%9%H0J30$G$OLr$KN)$?$J$$(B($B<ALd(B20.36$B;2>H(B)$B!#(B

References: Rationale Sec. 3.3.2.1; H&S Sec. 5.4.1 p. 124,
Sec. 7.4.1 pp. 186-7.

6.12:$BG[Ns$r;2>H$9$k$3$H$O%]%$%s%?$K@.$j2<$,$k$3$H$r9M$($l$P!"(Barr
$B$H$$$&G[Ns$,$"$C$?$H$7$F(Barr$B$H(B&arr$B$N0c$$$O!#(B

A:$B%G!<%?7?!#(B

ANSI/ISO C$B$N85$G$O(B&$B$O!V(BT$B$NG[Ns$X$N%]%$%s%?!W$r;:$_=P$9!#$3$l(B
$B$OG[NsA4BN$r;X$9!#(B(ANCI C$B$,CB@8$9$kA0$O!"(Barr$B$NA0$K(B&$B$rIU$1$k$3(B
$B$H$O!"$?$$$F$$7Y9p$r>7$-!"$?$$$F$$L5;k$5$l$?!#(B) $B$9$Y$F$N(BC$B%3%s(B
$B%Q%$%i$GG[Ns$X$N(B($B%-%c%9%H$N$J$$(B)$B;2>H$O%]%$%s%?$r;:$_=P$9!#$3(B
$B$N%]%$%s%?$O(BT$B$X$N%]%$%s%?$GG[Ns$N:G=i$NMWAG$r;X$9(B(($B<ALd(B
6.3, 6.13, 6.18$B$b;2>H$N$3$H(B)

References: ANSI Sec. 3.2.2.1, Sec. 3.3.3.2; ISO Sec. 6.2.2.1,
Sec. 6.3.3.2; Rationale Sec. 3.3.3.2; H&S Sec. 7.5.6 p. 198.

6.13:$BG[Ns$X$N%]%$%s%?$r$I$&$d$C$F@k8@$9$k$N$+!#(B

A:$B$?$$$F$$$O!"$=$s$J%]%$%s%?$r@k8@$7$?$$$N$G$O$J$$!#$J$K$2$J$/(B
$BG[Ns$X$N%]%$%s%?$H$$$&$H$-$O!"$?$$$F$$G[Ns$N:G=i$NMWAG$X$N%](B
$B%$%s%?$N$3$H$r$$$C$F$$$k$N$G$"$k!#(B

$BG[Ns$X$N%]%$%s%?$G$O$J$/!"G[Ns$NMWAG$X$N%]%$%s%?$r;H$&$3$H$r9M(B
$B$($k$3$H!#7?(BT$B$NG[Ns$O7?(BT$B$X$N%]%$%s%?$K@.$j2<$,$k(B($B<ALd(B6.3$B$r;2>H(B)$B!#(B
$B$3$l$OET9g$,$h$$!#$J$<$J$i7k2L$H$7$F$G$-$k%]%$%s%?$r;H$C$FE:;z(B
$B$D$-$G;2>H$7$?$j!"@0?t$r2C$($k$3$H$GG[Ns$N3FMWAG$K%"%/%;%9$7$?(B
$B$j$G$-$k!#$3$l$KBP$7$F!"K\Ev$NG[Ns$X$N%]%$%s%?$O!"E:;z$D$-$G;2(B
$B>H$7$?$j@0?t$r2C$($k$H!"G[NsA4BN$rHt$S1[$7$F$7$^$&!#$3$l$G$O$;(B
$B$$$<$$G[Ns$NG[Ns$r07$&$H$-$K$7$+LrN)$?$J$$(B($B>e$N<ALd(B6.18$B$r;2>H(B)$B!#(B

$BK\Ev$KG[Ns$=$N$b$N$X$N%]%$%s%?$,I,MW$J>l9g$O!V(Bint (*ap)[N];$B!W(B
$B$N$h$&$JI=8=$r;H$&!#$3$3$G(BN$B$OG[Ns$N%5%$%:$rI=$9(B($B<ALd(B1.21$B$b;2>H(B)$B!#(B
$BG[Ns$NBg$-$5$,$o$+$i$J$$>l9g!"(BN$B$r>JN,$9$k$3$H$,$G$-$k!#$7$+$7(B
$B7k2L$H$7$FF@$i$l$k!VBg$-$5$,L$CN$NG[Ns$X$N%]%$%s%?!W$OLr$KN)$?(B
$B$J$$!#(B

$B>e$N<ALd(B6.12$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 3.2.2.1; ISO Sec. 6.2.2.1.

6.14:$B$I$&$9$l$PG[Ns$NBg$-$5$r%3%s%Q%$%k;~$K@_Dj$9$k$3$H$,$G$-$k$+!#(B
$B8GDj$NBg$-$5$NG[Ns$r;H$o$J$/$F:Q$^$9$K$O$I$&$9$l$P$$$$$+!#(B

A:$BG[Ns$H%]%$%s%?$,F1Ey(B($B<ALd(B6.3$B$r;2>H$N$3$H(B)$B$G$"$k$3$H$K$h$C$F(B
malloc$B$7$?%a%b%j$r;X$9%]%$%s%?$r;H$C$FG[Ns$r$+$J$j8z2LE*$K(B
$B??;w$k$3$H$,$G$-$k!#(B

#include <stdlib.h>
int *dynarray:
dynarray = malloc(10 * sizeof(int));

$B$r<B9T$7$?8e$G$O(B($B$+$D(Bmalloc()$B$N8F$S=P$7$,@.8y$7$?$i(B)$B!"(Bdynarray
$B$G!"IaDL$N@EE*$K3d$jIU$1$?G[Ns(B(int a[10])$B$N$h$&$K07$C$F(B
dynarray[i] (0$B$+$i(B9$B$^$G$N(Bi$B$KBP$7$F(B)$B$r;2>H$9$k$3$H$,$G$-$k!#<A(B
$BLd(B1.31a, 6.16, 7.7$B$b;2>H$N$3$H!#(B

6.15:$B0z?t$H$7$FEO$5$l$?G[Ns$NBg$-$5$K9g$C$?%m!<%+%k$JG[Ns$r$I$&$d$C(B
$B$F@k8@$9$k$3$H$,$G$-$k$+!#(B

A:C$B$G$OIT2DG=$@!#G[Ns$NBg$-$5$O%3%s%Q%$%k;~$KDj?t$G$J$1$l$P$J$i(B
$B$J$$!#(B(gcc$B$O%Q%i%a!<%?IU$-G[Ns$r3HD%5!G=$H$7$FDs6!$7$F$$$k!#(B)
malloc()$B$r;H$C$F!"4X?t$+$iJV$kA0$K(Bfree()$B$rI,$:8F$P$J$1$l$P$J$i(B
$B$J$$!#<ALd(B6.14, 6.16, 6.19, 7.22$B$r;2>H$N$3$H!#(B $B<ALd(B7.32$B$r;2>H(B
$B$9$kI,MW$,$"$k$+$b$7$l$J$$!#(B

References: ANSI Sec. 3.4, Sec. 3.5.4.2; ISO Sec. 6.4,
Sec. 6.5.4.2.

6.16:$BB?<!85$NG[Ns$rF0E*$K3d$jIU$1$k$N$O$I$&$7$?$i$h$$$+(B

A:$B$?$$$F$$%]%$%s%?$NG[Ns$r3d$jIU$1$F!"$=$l$>$l$N%]%$%s%?$rF0(B
$BE*$K3d$jIU$1$?(B"$BNs(B"$B$K=i4|2=$9$k$N$,0lHV$N2r7h:v$G$"$k!#0J2<$K(B2
$B<!85G[Ns$NNc$r5s$2$k!#(B

#include <stdlib.h>

int **array1 = (int **)malloc(nrows * sizeof(int *));
for(i = 0; i < nrows; i++)
array1[i] = (int *)malloc(ncolumns * sizeof(int));

($B$b$A$m$s(B"$BK\J*$N(B"$B%3!<%I$G$O(Bmalloc$B$NLa$jCM$N%A%'%C%/$,I,MW$G$"(B
$B$k!#(B)

$BG[Ns$NCf?H$r%a%b%j>eO"B3$K$9$k$3$H$b$G$-$k!#$?$@$7$3$&$9$k$H!"(B
$B8e$G0l$D0l$D$NNs$r:F3d$jIU$1$9$k$N$,LLE]$K$J$k!#0J2<$N$h$&$J(B
$BL@<(E*$J!"$A$g$C$H$7$?%]%$%s%?7W;;$,I,MW$H$J$k!#(B

int **array2 = (int **)malloc(nrows * sizeof(int *));
array2[0] = (int *)malloc(nrows * ncolumns * sizeof(int));
for(i = 1; i < nrows; i++)
array2[i] = array2[0] + i * ncolumns;

$B$I$A$i$rA*Br$7$F$b!"F0E*$K3d$jIU$1$?G[Ns$N3FMWAG$OIaDL$NG[Ns$N(B
$B$h$&$KE:$(;z$G%"%/%;%9$G$-$k!#(B (0 <= i <= NROWS $B$+$D(B 0 <= j <=
NCOLUMNS$B$G(B) arrayx[i][j] $B$H$$$&$U$&$K!#(B

$B$b$7>e$N$h$&$JFs=E4V@\%"%/%;%9J}K!$,$J$s$i$+$NM}M3$G<u$1F~$l$i(B
$B$l$J$$$J$i!"0l$D$NF0E*G[CV$N(B1$B<!85G[Ns$G(B2$B<!85G[Ns$r??;w$k$3$H$,(B
$B$G$-$k!#(B

int *array3 = (int *)malloc(nrows * ncolumns * sizeof(int));

$B$7$+$7$3$&$9$k$HE:;z$N7W;;$r<+J,$G9T$o$J$1$l$P$J$i$J$$!"$9$J$o(B
$B$A(Bi,j$BHVL\$NMWAG$X$N%"%/%;%9$O(B array3[i * ncolumns + j]$B$H$7$J$1(B
$B$l$P$J$i$J$$(B($B%^%/%m$r;H$($PL@<(E*$J7W;;$r1#$9$3$H$,$G$-$k!#$7(B
$B$+$7%^%/%m$r;H$($P3g8L$d%3%s%^$r;H$&I,MW$,$"$k$N$GB?<!85G[Ns(B
$B$X$N%"%/%;%9$N$h$&$K$O8+$($J$/$J$k!#F1$8$/%^%/%m$O>/$J$/$H$b0l(B
$B$D$N<!85$NBg$-$5$rCN$kI,MW$,$"$k!#<ALd(B6.19$B$b;2>H$N$3$H(B)$B!#(B

$B:G8e$KG[Ns$X$N%]%$%s%?$r;H$&J}K!$r>R2p$9$k!#(B

int (*array4)[NCOLUMNS] =
(int (*)[NCOLUMNS])malloc(nrows * sizeof(*array4));

$B$1$l$I!"$3$N9=J8$OFI$`?M$K62I]46$rM?$($k$7!"%3%s%Q%$%k;~$K0l$D(B
$B$N<!85$r=|$/$9$Y$F$N<!85$,3NDj$7$F$$$J$1$l$P$J$i$J$$!#(B

$B$I$NJ}K!$r$H$k$K$7$F$b!"I,MW$,$J$/$J$C$?$iG[Ns$r2rJ|$9$k$3$H$r(B
$B21$($F$*$+$J$1$l$P$J$i$J$$(B($B$=$l$O!"2?CJ$+$N<jB3$-$rF'$^$J$1$l(B
$B$P$J$i$J$$$+$b$7$l$J$$(B)$B!#$^$?G[Ns$rF0E*$K3d$jIU$1$FB>$N4X?t$K(B
$BEO$9:]$K!"EO$9@h$N4X?t$,!"@EE*$K3d$jIU$1$?IaDL$NG[Ns$r0z?t$H$7(B
$B$F<u$1$H$k>l9g$OFC$KCm0U$,I,MW$G$"$k(B($B<ALd(B6.20$B;2>H$N$3$H!#$^$?(B
$B<ALd(B6.18$B$b;2>H$N$3$H(B)$B!#(B

$B>e$N$I$N5;K!$b(B3$B<!850J>e$NG[Ns$K3HD%$9$k$3$H$,2DG=$G$"$k!#(B

6.17:$B$[$i$3$N%H%j%C%/!#2<$N$h$&$K=q$1$P(B

int realarray[10];
int *array = &realarray[-1];

array$B$O(B1$B;O$^$j$NG[Ns$N$h$&$K;H$($k!#(B

A:$B$3$N%F%/%K%C%/$OL%NOE*$@$,(B(NUMERICAL RECIPES IN C$B$N8E$$HG$G$b(B
$B;H$o$l$F$$$k(B)$B!"87L)$K$$$($P(BC$B8@8l$N5,3J$K=>$C$F$$$J$$!#%]%$%s%?(B
$B1i;;$O!"0lEY$K3d$j?6$i$l$?NN0h$H!"2>A[E*$J(B"$B=*C<(B"$B$r1[$($?(B1$B$D$a(B
$B$NMWAG$K$@$1Dj5A$5$l$F$$$F!"$=$l0J30$G$OL$Dj5A$G$"$k!#$3$N$3$H(B
$B$O!"$?$H$(%]%$%s%?$r;2>H$K;H$C$F$$$J$$$H$7$F$b$"$F$O$^$k!#>e$N(B
$B%3!<%I$O%*%U%;%C%H$r0z$$$?;~$K!"$H$s$G$b$J$$%"%I%l%9$r:n$j=P$7(B
$B$F(B($B$?$V$s%"%I%l%9$,(B"$B$0$k$C$H2s$C$F(B"$B%a%b%j%;%0%a%s%H$N@hF,$r1[(B
$B$($FB>$N%;%0%a%s%H$H=E$J$k$+$i$@$m$&(B)$B$&$^$/$$$+$J$/$J$k2DG=@-(B
$B$,$"$k!#(B

References: K&R2 Sec. 5.3 p. 100, Sec. 5.4 pp. 102-3, Sec. A7.7
pp. 205-6; ANSI Sec. 3.3.6; ISO Sec. 6.3.6; Rationale
Sec. 3.2.2.3.

6.18:$B;d$,;H$C$F$$$k%3%s%Q%$%i$O!"%]%$%s%?$X$N%]%$%s%?$r;H$&$Y$-(B
$B$H$3$m$G(B2$B<!85G[Ns$r;H$&$HITK~$r$$$&!#(B

A:$BG[Ns$,%]%$%s%?$K@.$j2<$,$k$H$$$&5,B'$O(B($B<ALd(B6.3$B;2>H(B)$B!":F5"E*$K(B
$B$O@.$jN)$?$J$$!#G[Ns$NG[Ns(B($BNc$($P(BC$B8@8l$K$*$1$k(B2$B<!85G[Ns(B)$B$O!"G[(B
$BNs$X$N%]%$%s%?$K@.$j2<$,$k$N$G$"$C$F!"%]%$%s%?$X$N%]%$%s%?$K@.(B
$B$j2<$,$k$o$1$G$O$J$$!#G[Ns$X$N%]%$%s%?$O!":.Mp$r>7$/$+$i!"Cm0U(B
$B$7$F07$o$J$1$l$P$J$i$J$$!#<ALd(B6.13$B$b;2>H$N$3$H!#(B($B:.Mp$O9T57$N(B
$B0-$$%3%s%Q%$%i!"$,B?<!85G[Ns$rB?CJ$N%]%$%s%?$H$7$F<u$1IU$1$k$3(B
$B$H$GA}D9$5$l$F$$$k!#$=$&$$$&%3%s%Q%$%i$H$7$F$O(Bpcc$B$N8E$$4v$D$+(B
$B$N%P!<%8%g%s$H!"$=$&$$$&(Bpcc$B$+$iGI@8$7$?(Blint$B$,4^$^$l$k(B)$B!#(B

$B$b$7(B2$B<!85G[Ns$r0J2<$N4X?t$KEO$9$H(B

int array[NROWS][NCOLUMNS];
f(array);

$B4X?t$N@k8@$O0J2<$N$I$A$i$+$G$J$$$H$$$1$J$$!#(B

f(int a[][NCOLUMNS])
{ ... }

$B$"$k$$$O(B

f(int (*ap)[NCOLUMNS])  /* ap$B$OG[Ns$X$N%]%$%s%?(B */
{ ... }

$B:G=i$N@k8@$G$O!"%3%s%Q%$%i$,2>0z?t$r!VG[Ns$NG[Ns!W$+$i!VG[Ns$X(B
$B$N%]%$%s%?!W$XDL>oDL$j0EL[$N=q$-49$($r9T$&(B($B<ALd(B6.3$B$H(B6.4$B$r;2>H(B)$B!#(B
2$B$DL\$NDj5A$G$O!"%]%$%s%?$NDj5A$G$"$k$H$O$C$-$j=q$$$F$"$k!#8F(B
$B$P$l$kB&$N4X?t$OG[NsJ,$NNN0h$r<h$k$o$1$G$O$J$$$N$G!"G[NsA4BN$N(B
$BBg$-$5$rCN$kI,MW$O$J$$!#Ns$N?t!V(BNROWS$B!W$O>JN,$9$k$3$H$,$G$-$k!#(B
$BG[Ns$N(B"$B7A(B"$B$OBg;v$G$"$k$+$i9T$N?t!V(BNCOLUMS$B!W$r(B(3$B<!850J>e$NG[Ns(B
$B$N>l9g$O:G=i$N<!85$r$N$>$/$9$Y$F$N<!85$NBg$-$5$r4^$a$F(B)$B;XDj$7(B
$B$J$1$l$P$J$i$J$$!#(B

$B$b$7%]%$%s%?$X$N%]%$%s%?$r<u$1IU$1$k$H4X?t$,@k8@$7$F$$$k$H(B
$B$-$K$O!"D>@\(B2$B<!85G[Ns$rEO$9$3$H$O$d$C$F$b0UL#$,$J$$$@$m$&!#(B

$B<ALd(B6.12$B$H(B6.15$B$b;2>H$N$3$H!#(B

References: K&R1 Sec. 5.10 p. 110; K&R2 Sec. 5.9 p. 113; H&S
Sec. 5.4.3 p. 126.

6.19:$B%3%s%Q%$%k;~$K(B"$BI}(B"$B$,L$Dj$N(B2$B<!85G[Ns$r0z?t$H$9$k4X?t$O$I$&$d$C(B
$B$F=q$1$P$h$$$+!#(B

A:$B$3$l$O7k9=Fq$7$$!#0l$D$O(B[0][0]$BMWAG$X$N%]%$%s%?$r!"(B2$B$D$N<!85$N(B
$B$=$l$>$l$NBg$-$5$H0l=o$KEO$7$FG[Ns$NE:;zIU$1$r(B"$B<j$G(B"$B??;w$kJ}K!(B
$B$,$"$k!#(B

f2(aryp, nrows, ncolumns)
int *aryp;
int nrows, ncolumns;
{ ... ary[i][j] $B$O<B:]$K$O(Baryp[i * ncolumns + j] ... }

$B$3$N4X?t$O<ALd(B6.18$B$NG[Ns$r;H$C$F0J2<$N$h$&$K8F$V$3$H$b$G$-$k!#(B

f2(&array[0][0], NROWS, NCOLUMNS);

$B$7$+$7$J$,$i(B $B$3$N$h$&$JJ}K!$K$h$C$F(B"$B<j$G(B"$BB?<!85$NG[Ns$NE:;zIU(B
$B$1$r$9$k%W%m%0%i%`$O(BANSI C$B5,3J$K87L)$K$O=>$C$F$$$J$$$3$H$KCm0U(B
$B$9$k$3$H!#(Bx >= NCOLUMNS$B$N>l9g$K(B(&array[0][0])[x]$B$K%"%/%;%9$7$?(B
$B$H$-$NF0:n$ODj5A$5$l$F$$$J$$!#(B

gcc$B$r;H$($P!"4X?t$N0z?t$r;H$C$F%m!<%+%k$NG[Ns$,$"$kBg$-$5$r;}(B
$B$D$H@k8@$9$k$3$H$,$G$-$k!#$7$+$7$3$l$OI8=`$G$O$J$$3HD%5!G=$G$"(B
$B$k!#(B

$BMM!9$JBg$-$5$NB?<!85G[Ns$r0z?t$K<h$k4X?t$r;H$$$?$$$J$i!"<ALd(B
6.16$B$N$h$&$K$9$Y$F$NG[Ns$rF0E*$K??;w$k$d$j$+$?$,$"$k!#(B

$B<ALd(B6.18, 6.20, 6.15$B$b;2>H$N$3$H!#(B

6.20$B4X?t$N0z?t$H$7$FG[Ns$rEO$9$H$-$K!"@EE*$K3d$jIU$1$?G[Ns$bF0E*$K(B
$B3d$jIU$1$?G[Ns$b<u$1IU$1$k$h$&$K$9$k$K$O$I$&$7$?$i$h$$$+!#(B

A:$BM#0l$N40A4$J2r$H$$$&$N$OB8:_$7$J$$!#0J2<$N@k8@$,$"$C$F!"(B

int array[NROWS][NCOLUMNS];
int **array1;/* ragged */
int **array2;/* contiguous */
int *array3;/* "flattened" */
int (*array4)[NCOLUMNS];

$B<ALd(B6.16$B$HF1$8$h$&$K%]%$%s%?$r=i4|2=$9$k$H$9$k!#$^$?0J2<$N$h$&(B
$B$K@k8@$7$?4X?t$,B8:_$9$k$H$9$k!#(B

f1(int a[][NCOLUMNS], int nrows, int ncolumns);
f2(int *aryp, int nrows, int ncolumns);
f3(int **pp, int nrows, int ncolumns);

$B4X?t(Bf1()$B$ODL>o$N(B2$B<!85$NG[Ns$r0z?t$H$7!"(Bf2()$B$O(B"$BJ?$i$K$7$?(B"2$B<!85(B
$B$NG[Ns$r0z?t$H$7!"(Bf3()$B$O%]%$%s%?$r;X$9%]%$%s%?$r0z?t$H$7$FG[Ns(B
$B$r??;w$k$H$9$k(B($B<ALd(B6.18$B$H(B6.19$B$b;2>H$N$3$H(B)$B!#0J2<$N8F$S=P$7$O$3(B
$B$A$i$N4|BTDL$j$NF0$-$r$9$k!#(B

f1(array, NROWS, NCOLUMNS);
f1(array4, nrows, NCOLUMNS);
f2(&array[0][0], NROWS, NCOLUMNS);
f2(*array, NROWS, NCOLUMNS);
f2(*array2, nrows, ncolumns);
f2(array3, nrows, ncolumns);
f2(*array4, nrows, NCOLUMNS);
f3(array1, nrows, ncolumns);
f3(array2, nrows, ncolumns);

$B0J2<$N(B2$B$D$NNc$b$?$$$F$$$N%^%7%s$GB?J,$&$^$/$$$/!#$?$@$72x$7$$(B
$B%-%c%9%H$,4^$^$l$F$$$k$7!"F0E*$K3d$jIU$1$?(Bncolumns$B$,!"@EE*$K3d(B
$B$jEv$F$?(BNCOLUMNS$B$H0lCW$9$k$H$-$7$+$&$^$/F0$+$J$$!#(B

f1((int (*)[NCOLUMNS])(*array2), nrows, ncolumns);
f1((int (*)[NCOLUMNS])array3, nrows, ncolumns);

$B$3$3$G$b(B&array[0][0]$B$r(Bf2$B$KEO$9$N$O(B(*array$B$rEO$9$N$b(B)$B87L)$K$O5,(B
$B3J$K=`5r$7$F$$$J$$$3$H$KCm0U$9$k$3$H!#<ALd(B6.19$B$r;2>H!#(B

$B$b$7$J$<>e5-$N4X?t8F$S=P$7$,$9$Y$F$&$^$/$$$/$+$H$$$&$3$H$H!"$J(B
$B$<>e5-$N$h$&$K5-=R$5$l$?$+$,$o$+$C$F$$$F!"1L$l$F$$$kAH$_9g$o$;(B
$B$,$J$<$&$^$/$$$+$J$$$+$b$o$+$C$F$$$k$N$J$i!"(BC$B8@8l$NG[Ns$H%]%$(B
$B%s%?$K$D$$$F$NCN<1$O7k9=$$$$@~$$$C$F$$$k$H;W$C$F$$$$$@$m$&!#(B

$B$5$^$6$^$JBg$-$5$NB?<!85$NG[Ns$N!">e$K=q$$$?$h$&$J$3$H$r5$$K$9(B
$B$kBe$o$j$N07$$$+$?$H$7$F$O!"$9$Y$F$NG[Ns$r<ALd(B6.16$B$K$"$k$h$&$K(B
$BF0E*$K$9$kJ}K!$,$"$k!#@EE*$JB?<!85$NG[Ns$,$J$1$l$P!"$D$^$j$9$Y(B
$B$F$NG[Ns$,<ALd(B6.16$B$N(Barray1$B$d(Barray2$B$N$h$&$K3d$jIU$1$i$l$F$$$k$J(B
$B$i!"$9$Y$F$N4X?t$O(Bf3()$B$N$h$&$K=q$/$3$H$,$G$-$k!#(B

6.21:$B$J$<%5%V%k!<%A%s$N0z?t$H$7$FEO$5$l$?G[Ns$NBg$-$5$r(Bsizeof()$B$G$-(B
$B$A$s$H7W;;$G$-$J$$$N$+!#(B

A:$B%3%s%Q%$%i$OG[Ns2>0z?t$,%]%$%s%?$H@k8@$5$l$?$h$&$K?6$kIq$$(B
($B<ALd(B6.4$B;2>H(B)$B!"(Bsizeof()$B$O%]%$%s%?$NBg$-$5$rJV$9!#(B

References: H&S Sec. 7.5.2 p. 195.


7$B>O(B $B%a%b%j$N3d$jIU$1(B

7.1:$B0J2<$N%W%m%0%i%`$O$J$<F0$+$J$$$N$+!#(B

char *answer;
printf("$B$J$K$+F~NO$7$F$/$@$5$$(B:\n");
gets(answer);
printf("$B$"$J$?$O(B \"%s\" $B$HF~NO$7$^$7$?(B\n", answer);

A:$B%]%$%s%?JQ?t(Banswer$B$O1~Ez$rCy$($k>l=j$H$7$F4X?t(Bgets()$B$KEO$5$l$k(B
$B$,!"$=$N;~E@$G$O(Banswer$B$OM-8z$JNN0h$r;X$7$F$$$J$$!#$9$J$o$A%]%$(B
$B%s%?(Banswer$B$O!"$I$3$r;X$7$F$$$k$N$+$o$+$i$J$$(B($B%m!<%+%k$JJQ?t(B
$B$O=i4|2=$5$l$k$3$H$O$J$$$7!"$?$$$F$$%4%_$,F~$C$F$$$k!#!V(Banswer$B!W(B
$B$,%L%k%]%$%s%?$H$7$F;O$^$k$3$H$5$(J]>Z$5$l$F$$$J$$!#<ALd(B1.30
$B$H(B5.1$B$r;2>H$N$3$H(B)$B!#(B

$B>e$N<ALd$N%W%m%0%i%`$r=$@5$9$k0lHV$d$5$7$$J}K!$O!"%]%$%s%?$NBe(B
$B$o$j$K%m!<%+%k$NG[Ns$r;H$C$F!"%3%s%Q%$%i$KNN0h$N3dEv$F$r$^$+$;(B
$B$k$3$H$G$"$k!#(B

#include <stdio.h>
#include <string.h>

char answer[100], *p;
printf("$B$J$K$+F~NO$7$F$/$@$5$$!#(B:\n");
fgets(answer, sizeof answer, stdin);
if((p = strchr(answer, '\n')) != NULL)
*p = '\0';
printf("$B$"$J$?$O(B \"%s\"$B$HF~NO$7$^$7$?(B\n", answer);

$B$3$NNc$O(Bgets()$B$NBe$o$j$K(Bfgets()$B$r;H$C$F!"G[Ns$KB3$/ItJ,$,>e=q(B
$B$-$5$l$J$$$h$&$J9)IW$b$7$F$$$k!#(B($B<ALd(B12.23$B;2>H!#;DG0$J$,$i$3$N(B
$BNc$G$O(Bfgets()$B$O(Bgets()$B$H$O0c$C$F!"8e$m$N2~9T$r<+F0E*$K$O:o=|$7(B
$B$J$$(B)$B!#(Bmalloc()$B$r;H$C$FJVEzMQ$N%P%C%U%!$r3d$jIU$1$k$3$H$b$G$-(B
$B$k!#(B

7.2:strcat()$B$,$&$^$/F0$+$J$$!#0J2<$N%W%m%0%i%`$rAv$i$;$?$i!"(B

char *s1 = "Hello, ";
char *s2 = "world!";
char *s3 = strcat(s1, s2);

$BJQ$JEz$($,JV$C$F$-$?!#(B

A:$B>e$N<ALd(B7.1$B$HF1$8$h$&$K!"$3$3$G$b0lHV$NLdBj$OO"7k$7$?7k2L$rCy(B
$B$($kNN0h$,$&$^$/3d$jIU$1$i$l$F$$$J$$$3$H$G$"$k!#(BC$B8@8l$K$O!"<+(B
$BF0E*$K4IM}$5$l$kJ8;zNs7?$O$J$$!#%=!<%9%3!<%I$GL@<(E*$KI=$5$l$?(B
$B%*%V%8%'%/%H$KNN0h$r3d$jIU$1$k$@$1$G$"$k(B($B$3$3$G$$$&(B"$BJ8;zNs(B"$B$K(B
$B$D$$$F$O(Bchar$B$NG[Ns$H(B"$B$G$/$/$i$l$?J8;zNs$r4^$`(B)$B!#%W%m%0%i%^$O!"(B
$BJ8;zNs$NO"7k$N$h$&$J<B9T;~$NA`:n$N7k2L$KBP$7$F==J,$JNN0h$r!"G[(B
$BNs$rDj5A$7$?$j!"(Bmalloc()$B$r5/F0$9$k$3$H$GL@<(E*$K3d$jIU$1$J$1$l(B
$B$P$J$i$J$$!#(B

strcat()$B$O!"NN0h$N3d$jIU$1$r9T$o$J$$!#(B2$BHVL\$NJ8;zNs$O:G=i$NJ8(B
$B;zNs$K!"$=$N>l$GO"7k$5$l$k!#0l$D$N2r7hJ}K!$O!":G=i$NJ8;zNs$r==(B
$BJ,$JBg$-$5$r;}$DG[Ns$H$7$F@k8@$9$k$3$H$G$"$k!#(B

char s1[20] = "Hello, ";

strcat$B$OBh0l0z?t$rJV$9$N$G(B($B$3$N>l9g$O(Bs1)$B!"(Bs3$B$OM>7W$G$"$k!#(B

$B<ALd$N%3!<%I$N85$N(Bstrcat()$B$N8F$S=P$7$O!"<B:]$K$OFs$D$NFqE@$,$"(B
$B$k!#(Bs1$B$K$h$C$F;X$5$l$kJ8;zNs%j%F%i%k$,!"O"7k$5$l$F$G$-$k$I$s$J(B
$B%F%-%9%H$bJ]B8$G$-$k$[$IBg$-$/$J$$$+$b$7$l$J$$$@$1$G$O$J$/!"$=(B
$B$b$=$b=q$-9~$_IT2D$+$b$7$l$J$$!#<ALd(B1.32$B;2>H!#(B

References: CT&P Sec. 3.2 p. 32.

7.3:$B$1$l$I(Bstrcat()$B$N(Bman$B%Z!<%8$K$h$k$H!"(Bstrcat()$B$O0z?t$H$7$F(B2$B$D$N(B
char$B$X$N%]%$%s%?$r<h$k$3$H$J$C$F$$$k!#NN0h$N3d$jIU$1$,I,MW$G(B
$B$"$k$H$I$&$d$C$FCN$k$3$H$,$G$-$k$N$+!#(B

A:$B0lHL$K%]%$%s%?$r;H$&$H$-$O!"$$$D$bNN0h$N3d$jIU$1$N$3$H$r9M$($F(B
$B$*$+$J$1$l$P$J$i$J$$!#>/$J$/$H$b%3%s%Q%$%i$,Be$o$j$K$d$C$F$/$l(B
$B$k$3$H$r3NG'$7$F$*$+$J$1$l$P$J$i$J$$!#%i%$%V%i%j$N%I%-%e%a%s%H(B
$B$K5-21NN0h$N3d$jIU$1$K$D$$$F$O$C$-$j5-=R$7$F$$$J$1$l$P!"3d$jEv(B
$B$F$OIaDL$O;H$&?M$N@UG$$G$"$k!#(B

Unix$B$N(Bman$B$N@hF,$d(BANSI C$B5,3J$NMWLs$N>O$O!"8m2r$r>7$/$+$b$7$l$J(B
$B$$!#$=$3$K:\$C$F$$$k%3!<%I$N0lIt$O!";H$$J}$H$$$&$h$j$O!"4X?t$N(B
$B<BAu$G;H$o$l$k4X?tDj5A$K6a$$!#$H$/$K(B($B9=B$BN$dJ8;zNs$X$N(B)$B%]%$%s(B
$B%?$r07$&4X?t$NB?$/$O$J$s$+$7$i$N%*%V%8%'%/%H(B($B9=B$BN$+G[Ns$X$N(B $B!D(B 
$B<ALd(B6.3$B$d(B6.4$B$r;2>H(B)$B$X$N%"%I%l%9$r0z?t$K5/F0$5$l$k!#$[$+$K$h$/(B
$B$"$kNc$O(Btime() ($B<ALd(B13.12$B;2>H(B)$B$d(Bstat()$B$G$"$k!#(B

7.5:$BJ8;zNs$rJV$9$O$:$N4X?t$,$"$k!#$1$l$I8F$s$@B&$N4X?t$KJV$C$F$/$k(B
$B$H!"JV$C$F$-$?J8;zNs$K$O%4%_$,F~$C$F$$$k!#(B

A:$B4X?t$,JV$9J8;zNs$r3JG<$9$kNN0h$,@5$7$/3d$jIU$1$i$l$F$$$k$3$H$r(B
$B3N$+$a$k$3$H!#JV$5$l$?%]%$%s%?$O@EE*$K3d$jIU$1$i$l$?%P%C%U%!$+!"(B
$B8F$s$@B&$N4X?t$+$iEO$5$l$?%P%C%U%!$+!"(Bmalloc()$B$K$h$jF@$i$l$?%a(B
$B%b%j$r;X$9$Y$-$G!"8F$P$l$?4X?t$N%m!<%+%k$J(B($B<+F0JQ?t$N(B)$BG[Ns$r;X(B
$B$7$F$$$F$O$$$1$J$$!#$D$^$j0J2<$N$h$&$J$3$H$O@dBP$K$d$C$F$O$$$1(B
$B$J$$!#(B

char *itoa(int n)
{
char retbuf[20];/* $B4V0c$$(B */
sprintf(retbuf, "%d", n);
return retbuf;/* $B4V0c$$(B */
}
 
$B=$@5$9$kJ}K!$N(B1$B$D$O!"%P%C%U%!$r0J2<$N$h$&$K@k8@$9$k$3$H$G$"$k(B
($B$3$l$b!"4X?t$,:F5"E*$K5/F0$5$l$k>l9g$d!"La$jCM$,F1;~$KJ#?t$N(B
$B2U=j$GI,MW$J>l9g$K$&$^$/9T$+$J$$$3$H$r9M$($k$HIT==J,$G$"$k(B)$B!#(B

static char retbuf[20];

$B<ALd(B12.21$B$H(B20.1$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 3.1.2.4; ISO Sec. 6.1.2.4.

7.6:$B$I$&$7$F(Bmalloc()$B$r8F$V$H!V7Y9p(B: $B@0?t$r%]%$%s%?$KBeF~$N:]$K$O(B
$B%-%c%9%H$,I,MW!W$H$$$&$N$,=P$k$N$+!#(B

A:<stdlib.h>$B$r(B#include$B$7$?$+!"$7$F$J$$$H$9$k$H(Bmalloc()$B$,@5$7$/@k(B
$B8@$5$l$k$h$&$K$7$?$+!#<ALd(B1.25$B$b;2>H$N$3$H!#(B

References: H&S Sec. 4.7 p. 101.

7.7:malloc$B$,JV$7$?CM$r3d$jIU$1$?%G!<%?7?$N%]%$%s%?$KCm0U?<$/%-%c%9(B
$B%H$7$F$$$k%3!<%I$r$?$^$K8+$k$N$O$J$<$+!#(B

A:ANSI/ISO$B5,3J$N(BC$B8@8l$,(Bvoid *$B$H$$$&HFMQ$N%]%$%s%?7?$rF3F~$9$k(B
$B$^$G$O!"8_49@-$N$J$$%]%$%s%?7?$N4V$GBeF~$r$9$k$H$-$K7Y9p$rL[(B
$B$i$;$k$N(B($B$b$7$+$7$?$iJQ49$b$5$;$k$N$K(B)
$B$K$3$&$7$?%-%c%9%H$,I,MW$H$J$k$3$H$,$h$/$"$C$?!#(B

ANSI/ISO$B5,3J$N(BC$B$G$O!"$3$&$7$?%-%c%9%H$O$b$&I,MW$J$$!#$=$l$I$3(B
$B$m$+:#$G$O;W$$$H$I$^$C$?J}$,$h$$$H<gD%$9$k$3$H$b2DG=$G$"$k!#$3(B
$B$&$7$?%-%c%9%H$O(Bmalloc()$B$,$?$^$?$^@5$7$/@k8@$5$l$?$+$C$?$H$-$K!"(B
$BBg;v$J7Y9p$r1#$7$F$7$^$&2DG=@-$,$"$k$+$i$G$"$k!#>e$N<ALd(B7.6$B$b(B
$B;2>H$N$3$H!#(B

References: H&S Sec. 16.1 pp. 386-7.

7.8:$B0J2<$N$h$&$J%3!<%I$r8+$?!#(B

char *p = malloc(strlen(s) + 1);
strcpy(p, s);

malloc((strlen(s) + 1) * sizeof(char))$B$G$O(B?

A:sizeof(char)$B$r3]$1$kI,MW$,$"$k>l9g$O@dBP$K$J$$!#$J$<$J$i(B
sizeof(char)$B$ODj5A$K$h$j$T$C$?$j(B1$B$G$"$k$+$i!#(B ($B0lJ}!"(B
sizeof(char)$B$r$+$1$F$b2?$b32$O$J$$!#$3$&=q$/$3$H$G<0$K(Bsize_t$B$,(B
$B8=$l$FM}2r$7$d$9$/$J$k$+$b$7$l$J$$!#(B)$B<ALd(B8.9$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 3.3.3.4; ISO Sec. 6.3.3.4; H&S Sec. 7.5.2
p. 195.

7.14:$B%*%Z%l!<%F%#%s%0%7%9%F%`$K$h$C$F$O(Bmalloc$B$7$?%a%b%j$r<B:]$K3N(B
$BJ]$9$k$N$r%W%m%0%i%`$,$=$N%a%b%j$r;H$*$&$H$9$k$^$G@h1d$P$7$9(B
$B$k$HJ9$$$?$3$H$,$"$k!#$3$l$OJ8K!>e5v$5$l$k$N$+!#(B

A:$B$3$l$OFq$7$$!#5,3J$O!"%7%9%F%`$O$3$&$$$&Iw$K?6$kIq$C$F$b$h$$$H(B
$B=q$$$F$$$J$$$1$l$I!"$3$&$$$&Iw$K?6$kIq$C$F$O$$$1$J$$$H$O$C$-$j(B
$B=q$$$F$"$k$o$1$G$b$J$$!#(B

References: ANSI Sec. 4.10.3; ISO Sec. 7.10.3.

7.16:$B?tCM1i;;$r$9$k$N$K!"Bg$-$JG[Ns$r3d$jIU$1$h$&$H9M$($F$$$k!#2<$N(B
$B%3!<%I$r=q$$$?$H$3$m!"(B

double *array = malloc(300 * 300 * sizeof(double));

malloc()$B$O%L%k$rJV$9$o$1$G$O$J$$$1$l$I!"%W%m%0%i%`$NF0$-$,JQ$@!#(B
$B%a%b%j$r>e=q$-$7$?$j!"$3$C$A$,K>$s$@$@$1(Bmalloc()$B$,3d$jIU$1$F$J(B
$B$+$C$?$j$H$+$9$k$h$&$@!#(B

A:300 x 300$B$O(B90,000$B$G!"$3$l$O(Bsizeof(double)$B$r3]$1$kA0$+$i!"(B16$B%S%C(B
$B%H$N@0?t$K$OG<$^$i$J$$$3$H$KCm0U(B($B<ALd(B1.1$B;2>H(B)$B!#$3$s$J$KBg$-$J(B
$B%a%b%j$r3NJ]$9$kI,MW$,$"$k$H$-$O!"Cm0U$9$kI,MW$,$"$k!#;H$C$F$$(B
$B$k%^%7%s$N(Bsize_t(malloc()$B$,G'$a$?%G!<%?7?(B)$B$,(B32$B%S%C%H$G$"$l$P!"(B
300 * (300 * sizeof(double))$B$H=q$/$3$H$G$d$C$F$$$1$k$+$b$7$l$J(B
$B$$(B($B<ALd(B3.14$B;2>H(B)$B!#$3$l$GBLL\$J$i%G!<%?$N9=B$$r$b$C$H>.$5$JC10L(B
$B$KJ,2r$9$k$+!"(B32$B%S%C%H$N%^%7%s$r;H$&$+!"I8=`$G$O$J$$%a%b%j3d$j(B
$BIU$1%k!<%A%s$r;H$&$+$7$J$1$l$P$J$i$J$$!#<ALd(B19.23$B$b;2>H$N$3$H!#(B

7.17:$B;d$N(BPC$B$K$O(B8MB$B$b%a%b%j$,:\$C$F$$$k!#$I$&$7$F(B640K$B$+$=$3$i$7(B
$B$+(Bmalloc()$B$G$-$J$5$=$&$J$N$+!#(B

A:PC$B8_495!$N%;%0%a%s%HIU$-$N%"!<%-%F%/%A%c!<$G$O!"(B640K$B$h$jB?$/$N(B
$B%a%b%j$r;H$&$3$H$OHs>o$KFq$7$$!#<ALd(B19.23$B$b;2>H$N$3$H!#(B

7.19:$B%W%m%0%i%`$,%3%1$k!#(Bmalloc()$B$NFbIt$N$I$3$+$N$h$&$@!#$G$b$I$3$,(B
$B0-$$$+J,$+$i$J$$!#(B

A:malloc$B$7$?NN0h$NFbIt$N%G!<%?9=B$$O;DG0$J$,$iHs>o$K4JC1$K2u$l$F(B
$B$7$^$&!#$7$+$b0z$-5/$3$5$l$k>c32$ODI@W$7$K$/$$$b$N$H$J$k$3$H$,(B
$B$"$k!#$$$A$P$s$h$/$"$k>c32$N85$O!"(Bmalloc$B$7$?NN0h$K3d$jIU$1$?Bg(B
$B$-$5$h$j$bB?$/=q$-9~$s$G$7$^$&$3$H$G$"$k!#FC$K$h$/$"$kNc$O!"Bg(B
$B$-$5(Bstrlen(s)+1$B$G$O$J$/!"Bg$-$5(Bstrlen(s)$B$@$1(Bmalloc()$B$G3d$jIU$1(B
$B$k$3$H$G$"$k!#B>$K$O(Bfree$B$7$?NN0h$r;X$9%]%$%s%?$r;H$&$3$H$d!"(B2
$B2s(Bfree$B$7$?$j!"(Bmalloc()$B$G3d$jIU$1$?@h$r;X$7$F$$$J$$%]%$%s%?$r(B
free()$B$r;H$C$F3+J|$7$h$&$H$7$?$j!"%L%k%]%$%s%?$r;H$C$F(B
realloc()$B$r8F$S=P$9$3$H$b>c32$r0z$-5/$3$9(B($B<ALd(B7.30$B$r;2>H(B)$B!#(B

$B<ALd(B7.26, 16.8, 18.2$B$b;2>H$N$3$H!#(B

7.20:$BF0E*$K3d$jIU$1$?5-21NN0h$O2rJ|$7$?8e$K$O;H$($J$$$M!#(B

A:$B;H$($J$$!#(Bmalloc()$B$N@N$N2r@b$K$O!"2rJ|$5$l$?NN0h$O!V2u$5$l$:$K(B
$B;D$C$F$$$k!W$H5-=R$7$F$"$k$b$N$b$"$C$?!#$3$N$&$+$D$JJ]>Z$O0lHL(B
$BE*$K$J$k$3$H$O$J$/!"(BC$B5,3J$G$O!"$3$N$h$&$J$3$H$rJ]>Z$9$k$3$H$O(B
$BMW5a$5$l$F$$$J$$!#(B

$B2rJ|$7$?NN0h$NCf?H$r0U<1$7$F;H$&%W%m%0%i%^$O>/$J$$!#$1$l$I6vA3(B
$B;H$C$F$7$^$&$3$H$O$h$/$"$k!#0lJ}8~%j%s%/IU$-%j%9%H$r2rJ|$9$k0J(B
$B2<$N(B($B@5$7$$(B)$B%3!<%I$r9M$($F$_$h$&!#(B

struct list *listp, *nextp;
for(listp = base; listp != NULL; listp = nextp) {
nextp = listp->next;
free((void *)listp);
}

$B0l;~JQ?t$N(Bnextp$B$r;H$&$3$H$J$/(Blistp = listp->next$B$r;H$C$?$H$9$l(B
$B$P$I$&$J$C$?$+9M$($F$_$k$3$H!#(B

References: K&R2 Sec. 7.8.5 p. 167; ANSI Sec. 4.10.3; ISO
Sec. 7.10.3; Rationale Sec. 4.10.3.2; H&S Sec. 16.2 p. 387; CT&P
Sec. 7.10 p. 95.

7.21:$B$I$&$7$F%]%$%s%?$,(Bfree()$B$r8F$s$@8e$G%L%k%]%$%s%?$K$J$i$J$$(B
$B$N$+!#(Bfree$B$7$?8e$N%]%$%s%?$NCM$r;H$&(B($BBeF~!"Hf3S$9$k(B)$B$3$H$O!"(B
$B$I$l$/$i$$4m81$J$N$+!#(B

A:free()$B$r8F$V$H!"(Bfree()$B$KEO$7$?%]%$%s%?$N;X$9@h$N%a%b%j$O2r(B
$BJ|$5$l$k$,!"8F$S=P$7$?B&$N%]%$%s%?$NCM$OJQ$o$i$J$$!#$=$l$O(BC
$B$NCMEO$7$H$O!"8F$P$l$?B&$N4X?t$,<+J,$N0z?t$r7h$7$FJQ$($k$3$H$O(B
$B$J$$$H$$$&$3$H$@$+$i$G$"$k!#(B($B<ALd(B4.8$B$b;2>H(B)

$B2rJ|$5$l$?%]%$%s%?$NCM$O87L)$K$$$($PL58z$G!"$=$l$r$I$&;H$C$F(B
$B$b!"$?$H$(4V@\;2>H0J30$N$3$H$K;H$C$F$bM}6~$N>e$G$O%H%i%V%k$N85(B
$B$G$"$k!#$?$@!"$3$l$O<BAu$N<A$NOC$@$1$l$I!"L58z$J%]%$%s%?$N32(B
$B$N$J$$;H$$J}$K$o$6$o$6Nc30$rH/@8$5$;$k<BAu$O$?$V$sB8:_$7$J$$!#(B

References: ANSI Sec. 4.10.3; ISO Sec. 7.10.3; Rationale
Sec. 3.2.2.3.

7.22:$B%m!<%+%k$J%]%$%s%?MQ$K%a%b%j$r(Bmalloc()$B$G3d$jIU$1$k!#$o$6$o$6(B
free()$B$r8F$P$J$1$l$P$J$i$J$$$+!#(B

A:$B$b$A$m$s!#%]%$%s%?$H%]%$%s%?$,;X$9@h$OJLJ*$G$"$k$3$H$rK:$l$F$O(B
$B$$$1$J$$!#%m!<%+%kJQ?t$O4X?t$+$iLa$k$H$-$K2rJ|$5$l$k!#$?$@$7%](B
$B%$%s%?JQ?t$K4X$7$F$O!"%]%$%s%?$,2rJ|$5$l$k$N$G$"$C$F!"%]%$%s%?(B
$B$,;X$9@h$,2rJ|$5$l$k$o$1$G$O$J$$!#(Bmalloc()$B$K$h$C$F3d$jIU$1$i$l(B
$B$?%a%b%j$OL@<(E*$K2rJ|$9$k$^$GI,$:;D$k!#0lHL$K!"$9$Y$F$N(B
malloc()$B$N8F$S=P$7$K!"BP1~$9$k(Bfree()$B$,$J$1$l$P$J$i$J$$!#(B

7.23:$BF0E*$K3d$jIU$1$?%*%V%8%'%/%H$X$N%]%$%s%?$r4^$`9=B$BN$r3d$jIU$1(B
$B$F$$$k!#9=B$BN$r2rJ|$9$kA0$K!"9=B$BN$,4^$`%]%$%s%?$N@h$N%*(B
$B%V%8%'%/%H$rA4It2rJ|$7$J$1$l$P$J$i$J$$$N$+!#(B

A:$B$=$N$H$*$j!#0lHL$K(Bmalloc()$B$,JV$7$F$-$?%]%$%s%?$r(B($B2rJ|$9$k$H$7(B
$B$?$i(B)$B$=$l$>$l0lEY$@$1(Bfree()$B$KEO$9$7$/$_$rMQ0U$7$J$1$l$P$$$1$J(B
$B$$!#$*$*$6$C$Q$J;X?K$H$7$F$O%W%m%0%i%`Fb$N(Bmalloc$B$N3F8F=P$7$KBP(B
$B$7$F$=$N(Bmalloc$B$N8F=P$7$G3d$jIU$1$?%a%b%j$r2rJ|$9$k(Bfree$B$,$I$l$+(B
$B%W%m%0%i%^$OEz$($i$l$J$1$l$P$J$i$J$$!#(B

$B<ALd(B7.24$B$b;2>H$N$3$H!#(B

7.24:$B%W%m%0%i%`$,=*N;$9$kA0$K!"3d$jIU$1$?%a%b%j$r2rJ|$7$J$1$l$P$J$i(B
$B$J$$$+!#(B

A:$B$=$NI,MW$O$J$$!#$^$H$b$J%*%Z%l!<%F%#%s%0%7%9%F%`$J$i$-$C$H%W%m(B
$B%0%i%`$,=*N;$7$?;~E@$G$9$Y$F$N%a%b%j$r<h$jJV$9$@$m$&!#$K$b$+$+(B
$B$o$i$:!"8D?M8~$1%3%s%T%e!<%?(B(PC)$B$NCf$K$O%a%b%j$r<h$jLa$9$3$H$,(B
$B3N<B$K$O$G$-$J$$$b$N$b$"$k$h$&$G$"$k!#(BANSI/ISO C$B5,3J$+$i7kO@IU(B
$B$1$i$l$k$3$H$O!"2rJ|$7$F$/$l$k$+$I$&$+$O!V<BAu$NIJ<A$,$I$l$/$i(B
$B$$9b$$$+$K$h$k!W$H$$$&$3$H$@$1$G$"$k!#(B

References: ANSI Sec. 4.10.3.2; ISO Sec. 7.10.3.2.

7.25:$BBgNL$N5-21NN0h$r(Bmalloc$B$7$F(Bfree$B$7$F$^$o$k%W%m%0%i%`$,$"$k!#$1$l(B
$B$I!"%a%b%j$N;HMQ>u67$r$_$k$H(B(ps$B$G8+$($kCM$G$O(B)$BNN0h$,La$C$F$-$?(B
$B$h$&$K$O8+$($J$$!#(B

A:$B$?$$$F$$$N(Bmalloc/free$B$N<BAu$O!"2rJ|$5$l$?%a%b%j$r%*%Z%l!<%F%#(B
$B%s%0%7%9%F%`$K(B($B%*%Z%l!<%F%#%s%0%7%9%F%`$,$"$C$?$H$7$F(B)$BJV$5$J$$!#(B
$B8e$+$i(Bmalloc()$B$,8F$S=P$5$l$?$H$-$N$?$a$K<h$C$F$*$/!#(B

7.26:free()$B$O!"2?%P%$%H2rJ|$9$k$+$r$I$&$d$C$FCN$k$N$+!#(B

A:malloc/free$B$N<BAu$O!"%a%b%j$N%V%m%C%/$r3d$jIU$1$F!"$=$N%V%m%C(B
$B%/$N@hF,%"%I%l%9$rJV$9!#$=$N;~$K!"%V%m%C%/$N%5%$%:$r5-21$9$k!#(B
$B$h$C$F2rJ|$9$k$H$-$K(Bfree$B$K;W$$=P$5$;$kI,MW$O$J$$!#(B

7.27:$B$@$C$?$i3d$jIU$1$?NN0h$NBg$-$5$r(Bmalloc$B%Q%C%1!<%8$KJ9$/$3$H$,$G(B
$B$-$k$N$+!#(B

A:$B0\?"@-$N9b$$J}K!$G$OIT2DG=$G$"$k!#(B

7.30:realloc()$B$N:G=i$N0z?t$K%L%k%]%$%s%?$r;H$&$3$H$O5v$5$l$F$$$k(B
$B$N$+!#$I$&$7$F$=$s$J$3$H$r$9$k$N$+!#(B

A:ANSI C$B$O$3$N;HMQJ}K!$r5v$7$F$$$k(B($B$3$l$K4X78$9$k(Brealloc(...,0)
$B$b5v$7$F$$$k!#$3$l$,NN0h$r2rJ|$9$k(B)$B!#$1$l$I$b@N$N%3%s%Q%$%i$K(B
$B$OBP1~$7$F$$$J$$$b$N$b$"$k$N$G!"$3$NJ}K!$O0\?"@-$,9b$$$H$O$$$((B
$B$J$$!#Bh(B1$B0z?t$r%L%k%]%$%s%?$K$9$k$3$H$G!"3d$jIU$1$kNN0h$r$@$s(B
$B$@$sA}$d$7$F$$$/%"%k%4%j%:%`$r<B8=$9$k$H$-$K!"5/F0$9$kItJ,$r=q(B
$B$/$3$H$,MF0W$K$J$k!#(B

References: ANSI Sec. 4.10.3.4; ISO Sec. 7.10.3.4; H&S Sec. 16.3
p. 388.

7.31:calloc()$B$H(Bmalloc()$B$N0c$$$O!#(Bcalloc()$B$N(B0$B$rKd$a$k$H$$$&5!G=$r!"(B
$B%]%$%s%?$dIbF0>.?tE@?t$K;H$C$F$bLdBj$J$$$+!#(Bfree()$B$O(Bcalloc()
$B$,3d$jIU$1$?NN0h$K$bF/$/$+!"$=$l$H$b(Bcfree()$B$r;H$o$J$/$F$O$J$i(B
$B$J$$$+!#(B

A:calloc(m, n)$B$O<B<AE*$K0J2<$N%3!<%I$HF1$8F0$-$r$9$k!#(B

p = malloc(m * n);
memset(p, 0, m * n);

0$B$rKd$a$k$H$$$&$N$OA4%S%C%H(B0$B$K$9$k$H$$$&$3$H$G!"%L%k%]%$%s%?$dIb(B
$BF0>.?tE@$N(B0$B$GKd$a$k$3$H$rJ]>Z$7$F$$$J$$(B(5$B>O(B
$B$r;2>H$N$3$H(B)$B!#(Bcalloc()$B$,3d$jIU$1$?NN0h$N2rJ|$K(Bfree()$B$r;H$&$3(B
$B$H$K$b@5$7$/;H$($k!#(B

References: ANSI Sec. 4.10.3 to 4.10.3.2; ISO Sec. 7.10.3 to
7.10.3.2; H&S Sec. 16.1 p. 386, Sec. 16.2 p. 386; PCS Sec. 11
pp. 141,142.

7.32:alloca()$B$H$O2?<T$G!"$J$<;H$o$J$$$[$&$,$h$$$H?M$O8@$&$N$+!#(B

A:alloca()$B$ONN0h$r3d$jIU$1!"(Balloca()$B$r5/F0$7$?4X?t$rH4$1$?;~E@$G(B
$B$=$NNN0h$O<+F0E*$K2rJ|$5$l$k!#$9$J$o$A(Balloca()$B$K$h$C$F3d$jIU$1(B
$B$i$l$?NN0h$O!"FCDj$N4X?t$N!V%9%?%C%/%U%l!<%`!W$d$=$N4X?t$NA08e(B
$B$N>u67$K6I=jE*$H$J$k!#(B

alloca()$B$r0\?"@-$,9b$$$h$&$K=q$/$3$H$O$G$-$J$$$7!"%9%?%C%/$N$J(B
$B$$%^%7%s>e$K<BAu$9$k$3$H$OFq$7$$!#$3$l$r;H$&$3$H$O!"La$jCM$rD>(B
$B@\JL$N4X?t$KEO$9>l9g$K(B($B$9$0$K;W$$$D$/$h$&$J<BAu$G$O!"%9%?%C%/(B
$B$K4p$E$/%^%7%s$G$OI,$:<:GT$9$k(B)$B!"$?$H$($P(B
fgets(alloca(100),100, stdin)$B$N$h$&$J<0$GLdBj$r>7$/!#(B

$B$3$l$i$NM}M3$K$h$j!"(Balloca()$B$OJXMx$K$_$($k$,!"0\?"@-$,9b$/(B
$B$J$1$l$P$J$i$J$$%W%m%0%i%`$G$O;H$&$3$H$O$G$-$J$$!#(B

$B<ALd(B7.22$B$b;2>H$N$3$H!#(B

References: Rationale Sec. 4.10.3.

8$B>O(B $BJ8;z$HJ8;zNs(B

8.1:$B$I$&$7$F!"(B

strcat(string, '!');

$B$O$&$^$/F0$+$J$$$N$+!#(B

A:$BJ8;z(B(character)$B$HJ8;zNs(B(string)$B$K$OBg$-$J0c$$$,$"$k!#(Bstrcat()
$B$OJ8;zNs$rO"7k$9$k!#(B

C$B$NJ8;z$OJ8;z=89g$G$NCM$KBP1~$9$k>.$5$J@0?t$GI=8=$5$l$k(B($B0J2<$N(B
$B<ALd(B8.6$B$r;2>H(B)$B!#J8;zNs$OJ8;z$NG[Ns$GI=8=$5$l$k!#$=$7$FIaDL$OG[(B
$BNs$N:G=i$NJ8;z$r;X$9%]%$%s%?$rA`:n$9$k!#J8;z$,Mh$k$3$H4|BT$5$l(B
$B$F$$$k$H$3$m$KJ8;zNs$r;H$&$3$H$b!"J8;zNs$,Mh$k$3$H$r4|BT$5$l$F(B
$B$$$k$H$3$m$KJ8;z$r;H$&$3$H$b4V0c$$$G$"$k!#J8;zNs$K(B!$B$rO"7k$9$k(B
$B$K$O!"(B

strcat(string, "!");

$B$r;H$&!#(B

$B<ALd(B1.32,7.2,16.6$B$r;2>H$N$3$H!#(B

References: CT&P Sec. 1.5 pp. 9-10.

8.2:$BJ8;zNs$,!"$"$kCM$H0lCW$9$k$+$I$&$+D4$Y$k%W%m%0%i%`$r=q$$$F$$$k!#(B
$B$J$<0J2<$N%3!<%I$G$O$&$^$/$$$+$J$$$N$+!#(B

char *string;
...
if(string == "value") {
/* $BJ8;zNs$,(B"value"$B$H0lCW$7$?(B */
...
}

A:C$B$NJ8;zNs$OJ8;z$NG[Ns$GI=8=$5$l$k!#$^$?(BC$B$O9TNs$rA4BN$H$7$FA`:n(B
($BBeF~!"Hf3S$J$I(B)$B$9$k$3$H$O$J$$!#>e$N%3!<%I$N(B==$B1i;;;R$O(B2$B$D$N%](B
$B%$%s%?$rHf3S$7$F$$$k!#$D$^$j%]%$%s%?JQ?t(Bstring$B$HJ8;zNs(B
"value"$B$X$N%]%$%s%?$,Ey$7$$$+$I$&$+D4$Y$k!#$H$$$&$3$H$ON><T(B
$B$,F1$8>l=j$r;X$7$F$$$k$+$I$&$+D4$Y$F$$$k!#$?$V$s0c$&$H$3$m$r;X(B
$B$7$F$$$k$N$GHf3S$,@.8y$9$k$3$H$O$J$$!#(B

2$B$D$NJ8;zNs$rHf3S$9$k$K$O!"%i%$%V%i%j4X?t(Bstrcmp()$B$r;H$&$N$,Ia(B
$BDL$G$"$k!#(B

if(strcmp(string, "value") == 0) {
/* $BJ8;zNs$,(B"value"$B$H0lCW$7$?(B */
...
}

8.3:$B$I$&$7$F!"(B

char a[] = "Hello, world!";

$B$H=q$1$k$N$K!"(B

char a[14];
a = "Hello, world!";

$B$H=q$1$J$$$N$+!#(B

A:$BJ8;zNs$OG[Ns$G!"G[Ns$KD>@\$OBeF~$G$-$J$$!#Be$o$j$K(Bstrcpy()$B$r;H(B
$B$&!#(B

strcpy(a, "Hello, world!");

$B<ALd(B1.32, 4.2, 7.2$B$b;2>H$N$3$H!#(B

8.6:$BJ8;z$KBP1~$9$k?tCM(B($BJ8;z=89g(B)$B$NCM$d!"$=$N5U$O$I$&$d$C$F5a$a$l$P(B
$B$h$$$+!#(B

A:C$B$GJ8;z$O!"$=$NCM$KBP1~$9$k(B($B$=$N%^%7%s$,;H$C$F$$$kJ8;z=89g$N(B)$B>.(B
$B$5$J@0?t$GI=8=$5$l$k!#$@$+$iJQ49%k!<%A%s$OI,MW$J$$!#J8;z$r;}$C(B
$B$F$$$k$H$$$&$3$H$O!"$=$NCM$r;}$C$F$$$k$H$$$&$3$H$G$"$k!#(B

8.9:$B%3%s%Q%$%i$,D4;R0-$$!#(Bsizeof('a')$B$NCM$,(B1$B$G$O$J$/$C$F(B2$B$K$J$C$F(B
$B$$$k(B(sizeof(char)$B$NCM$H0c$&(B)$B!#(B

A:$BCN$i$J$/$F6C$/$+$b$7$l$J$$$,!"(BC$B$NJ8;zDj?t$O(Bint$B7?$r;}$D!#$@$+$i(B
sizeof('a')$B$O(Bsizeof(int)$B$G$"$k(B($B$?$@$7(BC++$B$G$OOC$,0c$&(B)$B!#<ALd(B7.8$B$b(B
$B;2>H$N$3$H!#(B

References: ANSI Sec. 3.1.3.4; ISO Sec. 6.1.3.4; H&S Sec. 2.7.3
p. 29.

9$B>O(B $B%V!<%k?t(B

9.1:$B%V!<%kCM$r(BC$B8@8l$G07$&$N$KE,@Z$J%G!<%?7?$O(B? $B$J$<%V!<%kCM$r07$&(B
$B%G!<%?7?$,!"I8=`$GMQ0U$5$l$F$$$J$$$N$+!#??$H56$rI=$o$9$N$K!"(B
#define$B$r;H$&$Y$-$+Ns5sBN$r;H$&$Y$-$+!#(B

A:C$B8@8l$OI8=`$N%V!<%k7?$rMQ0U$7$F$$$J$$!#$3$l$O(B1$B$D$K$O%V!<%k7?$N(B
$B%G!<%?7?$rA*$V$3$H$O6u4V$H;~4V$rE7Gi$K$+$1$k$3$H$G$"$k$+$i$G$"(B
$B$k!#$I$A$i$rA*Br$9$k$+$O%W%m%0%i%^$K$^$+$;$k$N$,0lHV$G$"$k!#(B
(int$B$r%V!<%k7?$KA*$Y$PB.$$$@$m$&$7!"(Bchar$B$r%V!<%k7?$KA*$Y$P%G!<(B
$B%?$NJ]B8NN0h$N@aLs$K$J$k!#$1$l$I(Bint$B$h$j>.$5$$%G!<%?7?$r;H$&$H!"(B
int$B$KJQ49$7$?$j(Bint$B$+$iJQ49$9$k$N$G%3!<%I$,Bg$-$/$J$C$?$jCY$/$J(B
$B$k$+$b$7$l$J$$!#(B)

#define$B$r;H$&$+Ns5sBN$r;H$&$+$O$I$C$A$G$b$h$$$3$H$G!"$H$/$K6=(B
$BL#$r0z$/$h$&$J$3$H$O$J$$(B($B<ALd(B2.22$B$H(B17.10$B$r;2>H$N$3$H(B)$B!#%W%m%0(B
$B%i%`$d%W%m%8%'%/%H$G<sHx0l4S$7$F$$$k8B$j!"0J2<$N$I$l$r;H$C$F$b(B
$B$+$^$o$J$$(B

#define TRUE  1#define YES 1
#define FALSE 0#define NO  0

enum bool {false, true};enum bool {no, yes};

$B$"$k$$$O@8$N(B1$B$H(B0$B$r;H$&$N$b$$$$(B($BJQ?t$NCM$rI=<($9$k$H$-$KNs5sBN(B
$B$NL>A0$GI=<($7$F$/$l$k%G%P%C%,$r;H$C$F$$$k$N$G$"$l$P!"Ns5sBN$N(B
$B$[$&$,$$$$$+$b$7$l$J$$(B)$B!#(B

$B0J2<$N$h$&$J$A$g$C$H0c$C$?7A$r9%$`?M$b$$$k!#(B

#define TRUE (1==1)
#define FALSE (!TRUE)

$B$"$k$$$O(B"$BJd=u$N(B"$B%^%/%m!"Nc$($P(B

#define Istrue(e) ((e) != 0)

$B$rDj5A$9$k?M$b$$$k!#$I$A$i$K$7$F$bBg$7$?8z2L$O$J$$(B($B0J2<$N<ALd(B
9.2$B$r;2>H!#$^$?<ALd(B5.12$B$H(B10.2$B$b;2>H$N$3$H(B)$B!#(B

9.2:TRUE$B$r(B1$B$K(B#define$B$9$k$3$H$O4m81$G$O$J$$$N$+!#$J$<$J$i!"(BC$B8@8l$G(B
$B$O(B0$B$G$J$$CM$O$9$Y$F(B"$B??(B"$B$H9M$($i$l$k$+$i!#AH$_9~$_$N%V!<%kCM$r(B
$BJV$91i;;;R$d4X781i;;;R$,(B1$B0J30$NCM$r(B"$BJV$7$?$i(B"$B$I$&$9$k$N$+!#(B

A:C$B8@8l$G$O!"$I$s$JHs(B0$B$NCM$b??$H9M$($i$l$k$3$H$O??<B$G$"$k!#$7$+(B
$B$7$3$N$3$H$O!VF~NO$K$*$$$F$N$_!W!"$9$J$o$A%V!<%kCM$,$/$k$3$H$r(B
$B4|BT$5$l$F$$$k$H$3$m$G$@$1$J$j$?$D!#AH$_9~$_$N1i;;;R$K$h$C$F%V!<(B
$B%kCM$,;:$_=P$5$l$k$H$-$O!"(B1$B$+(B0$B$G$"$k$3$H$,J]>Z$5$l$F$$$k!#$h$C(B
$B$F%F%9%H(B

if ((a == b) == TRUE)

$B$O(B(TRUE$B$,(B1$B$G$"$k$+$.$j(B)$B4|BT$7$?$H$*$j$N7k2L$rJV$9!#$7$+$7%P%+(B
$B$2$?$3$H$G$"$k!#0lHL$K(BTRUE$B$d(BFALSE$B$rAj<j$KL@<(E*$K%F%9%H$9$k$3(B
$B$H$OK>$^$7$/$J$$!#$J$<$J$i%i%$%V%i%j4X?t$NCf$K$O(B($BM-L>$J$N$O(B
isupper()$B!"(Bisalpha()$B$J$I(B)$B>r7o$,@.N)$7$?$H$-$KHs(B0$B$NCM$rJV$9$,!"(B
$B$=$NCM$OI,$:$7$b(B1$B$G$O$J$$$b$N$,$"$k(B($B$5$i$K!"$b$77/$,!V(Bif((a ==
b) == TRUE)$B!W$,!V(Bif(a == b)$B!W$N2~NIHG$G$"$k$H?.$8$k$N$J$i!"$J(B
$B$<$=$3$G;_$a$k$N$+!#$J$<!V(Bif (((a == b) == TRUE) == TRUE)$B!W$r(B
$B;H$o$J$$$N$+(B)$B!#$*$*$^$+$JL\0B$H$7$F$O!"(BTRUE$B$H(BFALSE$B$r(B($B$"$k$$$O(B
$B;w$?J*$r(B)$B%V!<%kCM$r$"$i$o$9JQ?t$KBeF~$9$k:]$d!"4X?t$N0z?t!"%V!<(B
$B%kCM$rJV$94X?t$NLa$jCM$H$7$F$@$1;H$&$3$H!#$3$l$i$N%^%/%m$r7h$7(B
$B$FHf3S$K;H$C$F$O$$$1$J$$!#(B

$B%W%j%W%m%;%C%5$N%^%/%m$N$&$A!"(BTRUE$B$d(BFALSE($B$b$A$m$s(BNULL$B$b(B)$B$O(B
$B%3!<%I$N2DFI@-$r>e$2$k$N$K;H$&$N$G$"$C$F!"$"$i$o$9CM$,JQ$o$k2D(B
$BG=@-$,$"$k$+$i;H$&$N$G$O$J$$(B($B<ALd(B5.3$B$H(B5.10$B$b;2>H$N$3$H(B)$B!#(B

$B0lJ}!"%V!<%kCM$N<h$kCM$d!"Dj5A$N;EJ}$O$I$&8+$F$b:.Mp$r>7$/2DG=(B
$B@-$,$"$k!#%W%m%0%i%^$NCf$K$O(BTRUE$B$H(BFALSE$B%^%/%m$O:.Mp$NEY9g$r(B
$BA}$9$@$1$@$H9M$($F$$$k?M$b$$$k!#(B

References: K&R1 Sec. 2.6 p. 39, Sec. 2.7 p. 41; K&R2 Sec. 2.6
p. 42, Sec. 2.7 p. 44, Sec. A7.4.7 p. 204, Sec. A7.9 p. 206;
ANSI Sec. 3.3.3.3, Sec. 3.3.8, Sec. 3.3.9, Sec. 3.3.13,
Sec. 3.3.14, Sec. 3.3.15, Sec. 3.6.4.1, Sec. 3.6.5; ISO
Sec. 6.3.3.3, Sec. 6.3.8, Sec. 6.3.9, Sec. 6.3.13, Sec. 6.3.14,
Sec. 6.3.15, Sec. 6.6.4.1, Sec. 6.6.5; H&S Sec. 7.5.4 pp. 196-7,
Sec. 7.6.4 pp. 207-8, Sec. 7.6.5 pp. 208-9, Sec. 7.7 pp. 217-8,
Sec. 7.8 pp. 218-9, Sec. 8.5 pp. 238-9, Sec. 8.6 pp. 241-4;
"$B55$,%"%-%l%9$K8@$C$?$3$H(B".

9.3:p$B$,%]%$%s%?$@$H$7$F(Bif(p)$B$O@5$7$$>r7o$+!#(B

A:$B@5$7$$!#<ALd(B5.3$B$r;2>H$N$3$H!#(B

10$B>O(B C$B%W%j%W%m%;%C%5(B

10.2:$B8+$F8+$F2<$N5$$N$-$$$?%^%/%m!#(B

#define begin{
#define end}

$B$I$&;W$&!#(B

A:$B%2!<%C!#(B17$B>O$b;2>H$N$3$H!#(B

10.3:2$B$D$NCM$r8r49$9$kHFMQ$N%^%/%m$O!#(B

A:$B$3$N<ALd$K3N$+$J2rEz$O$J$$!#$b$7$bCM$,@0?t$J$iM-L>$JGSB>O@M}OB(B
$B$r;H$C$?5;$r;H$&$3$H$,$G$-$k!#$7$+$7!"$3$N5;$bIbF0>.?tE@I=<($N(B
$B?t$d%]%$%s%?$K$O;H$($J$$(B($B@0?t$N>l9g$bF10l$NJQ?t$r(B2$B$D$N0z?t(B
$B$H$7$F;XDj$9$k$3$H$O$G$-$J$$(B)$B!#$^$?@0?t7?$N(B"$BC/$G$b$o$+$k(B"$B6KC<(B
$B$K5M$a9~$s$@%3!<%I(Ba^=b^=a^=b$B$b!"I{:nMQ$,J#?t2s5/$3$k$3$H$K$h$j(B
$B87L)$K$$$($PJ8K!0cH?$G$"$k(B)$B!#$b$7%^%/%m$rG$0U$N7?$NCM$K;H$$$?(B
$B$$$J$i(B($BIaDL$O$3$l$,L\E*$G$"$k(B)$B!"0l;~JQ?t$r;H$&$3$H$O$G$-$J$$!#(B
$B$J$<$J$i!"$I$N7?$N0l;~JQ?t$,I,MW$+$o$+$i$J$$$+$i$G$"$k(B($B$b$70l(B
$B;~JQ?t$,;H$($?$H$7$F$b!"JQ?t$NL>A0$NIU$1$+$?$K6lO+$9$k$@$m$&(B)$B!#(B
$BI8=`(BC$B$O(Btypeof$B1i;;;R$rMQ0U$7$F$$$J$$!#(B

$B0lHV$NK|G=$N2r7hJ}K!$O!"%^%/%m$r;H$&$3$H$r9M$($J$$$3$H$@!#$?$@(B
$B$77?$rEO$9$?$a$KBh(B3$B$N0z?t$rEO$9$N$,LLE]$G$J$$$J$iOC$OJL$@!#(B

10.4:$BJ#?t$NJ8(B(multi-statement)$B$+$i$J$k%^%/%m$r=q$/$K$O$I$&$9$l$P(B
$B$h$$$+!#(B

A:$B$?$$$F$$L\I8$O!"4X?t$r8F$S=P$7(B1$B$D$+$i$J$k(B1$B$D$NJ8$N$h$&$K8F$Y$k%^(B
$B%/%m$r=q$/$3$H$G$"$k!#$H$$$&$3$H$O;H$&?M$,:G8e$N%;%_%3%m%s$r<+(B
$BJ,$GIU$1$k$+$i!"%^%/%mK\BN$K$O%;%_%3%m%s$rIU$1$F$O$$$1$J$$$3$H$K(B
$B$J$k!#%^%/%mK\BN$O!"C1$K3g8L(B{}$B$G$/$/$C$?J#?t$NJ8$G$"$C$F$O$J(B
$B$i$J$$!#$J$<$J$i%^%/%m$,(B($B8+$?L\$O0l$D$NJ8$H$7$F!"$+$DM>7W$J%;(B
$B%_%3%m%s$rIU$1$F8F$P$l$?$H$-$K(B)$B!"(Belse$B@a$r;}$D(Bif/else$BJ8$N(Bif$B$,@.(B
$BN)$7$?$H$-$NJ,4t$K;H$o$l$?$H$-$KJ8K!%(%i!<$H$J$k!#(B

$B@N$+$i$N2r7hJ}K!$O0J2<$K<($9$b$N$G$"$k!#(B

#define MACRO(arg1, arg2) do {\
/* declarations */\
stmt1;\
stmt2;\
/* ... */\
} while(0)/* ($B8e$m$N(B;$B$OL5$7(B) */

$B;H$&?M$,%;%_%3%m%s$rIU$1$?$H$-$K!">e5-$N%^%/%m$O$I$3$G;H$o$l$h(B
$B$&$H(B1$B$D$NJ8$H$J$k(B($B:GE,2=$r9T$&%3%s%Q%$%i$O!"I,$:56$K$J$k(B"$B;`$s(B
$B$@(B"$B%F%9%H$dDj?t(B0$BAj<j$N>r7o@.N)$KBP$9$kJ,4t$r<h$j5n$k$@$m$&!#$?(B
$B$@$7(Blint$B$OJ86g$rIU$1$k$+$b$7$l$J$$(B)$B!#(B

$B%^%/%m$NCf$N$9$Y$F$NJ8$,!"@k8@$b%k!<%W$b;}$?$J$$C1=c$J<0$J$i!"(B
$B4]3g8L(B()$B$G$/$/$C$F%3%s%^1i;;;R$G6h@Z$C$?<0$r;H$&$3$H$,$G$-$k(B
($BNc$H$7$F$O!"<ALd(B10.26$B$N:G=i$N(BDEBUG()$B%^%/%m$r;2>H$N$3$H(B)$B!#$3$N(B
$BJ}K!$r;H$($PCM$r(B"$BJV$9(B"$B$3$H$b$G$-$k!#(B

References: H&S Sec. 3.3.2 p. 45; CT&P Sec. 6.3 pp. 82-3.

10.6:$B=i$a$F!"%W%m%0%i%`$rJ#?t$N%=!<%9%U%!%$%k$KJ,$1$F$$$k!#2?$r(B.c$B%U%!(B
$B%$%k$KF~$l!"2?$r(B.h$B$KF~$l$?$i$$$$$+G:$s$G$$$k!#(B($B$=$b$=$b!V(B.h$B!W$C(B
$B$F2?(B?)

A: $B0lHL$K!"0J2<$N$b$N$O%X%C%@(B(.h)$B$KF~$l$k!#(B

$B%^%/%m$NDj5A(B($B%W%j%W%m%;%C%5$N(B#define)
$B9=B$BN!"6&MQBN!"Ns5sBN$N@k8@(B
typedef$B$N@k8@(B
$B30It4X?t$N@k8@(B($B<ALd(B1.11$B$b;2>H$N$3$H(B)
$B%0%m!<%P%kJQ?t$N@k8@(B

$BDj5A$d@k8@$rJ#?t$N%U%!%$%k$G6&M-$9$k$H$-$O!"$=$&$$$&Dj5A$d@k8@(B
$B$r%X%C%@%U%!%$%k$KF~$l$k$3$H$O$H$/$KBg;v$G$"$k!#(B($B@dBP$K30It(B
$B4X?t$N%W%m%H%?%$%W$r(B.c$B%U%!%$%k$KF~$l$F$O$$$1$J$$!#<ALd(B1.7$B$b;2(B
$B>H$N$3$H(B)

$B0lJ}!"@k8@$dDj5A$r$"$k%=!<%9%U%!%$%k$N@lMQ$K$7$?$$$J$i!"$=$N%=!<(B
$B%9%U%!%$%k$NCf$KF~$l$F$*$$$F$b$+$^$o$J$$!#(B

$B<ALd(B1.7$B$H(B10.7$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. 4.5 pp. 81-2; H&S Sec. 9.2.3 p. 267; CT&P
Sec. 4.6 pp. 66-7.

10.7:$B%X%C%@$,!"JL$N%X%C%@$r(B#include$B$9$k$3$H$OMFG'$5$l$F$$$k$N$+!#(B

A:$B$3$l$O=q$-J}$K4X$9$k<ALd$G$"$j!"$3$N<ALd$K4X$9$k5DO@$O@9$j>e$,(B
$B$k!#B?$/$N?M$,!"F~$l;R$N(B#include$B$O;_$a$?$[$&$,$$$$$H?.$8$F$$$k!#(B
$B8"0R$"$k(BIndian Hill$B%9%?%$%k%,%$%I(B($B<ALd(B17.9$B;2>H(B)$B$O!"0J2<$NM}M3(B
$B$K$h$jF~$l;R$O$h$/$J$$$H$7$F$$$k!#4XO"$9$kDj5A$rA\$7$K$/$9$k!#(B
$B%U%!%$%k$,Fs2s0J>e(B#include$B$5$l$k$HB?=E@k8@%(%i!<$H$J$k!#(B
Makefile$B$NJ]<i$,LLE]$K$J$k!#0lJ}(B#include$B$rF~$l;R$K$9$k$H%X%C%@(B
$B%U%!%$%k$r%b%8%e!<%k$rAH$_>e$2$k$h$&$K;H$&$3$H$,$G$-$k(B($B%X%C%@(B
$B%U%!%$%k$,I,MW$J%U%!%$%k$r(B#include$B$9$k!#;H$$<j$O$$$A$$$A(B
#include$B$7$F$^$o$i$J$/$F$9$`!#$$$A$$$A(B#include$B$7$F$^$o$k$N$O<j(B
$B$KIi$($J$/$J$C$FF,DK$N<o$H$J$k(B)$B!#(Bgrep($B$d%?%0%U%!%$%k$N$h$&$J%D!<(B
$B%k(B)$B$,$"$l$P!"Dj5A$,$I$3$K$"$k$N$+8+$D$1$k$N$r3Z$K$J$k!#M-L>$J(B
$B%H%j%C%/(B

#ifndef HEADER_FILE_NAME
#define HEADER_FILE_NAME
$B!D%X%C%@%U%!%$%k$NCf?H!D(B
#endif

$B$O(B($B3F%X%C%@%U%!%$%k$4$H$K0[$J$k%^%/%mL>$rMQ0U$7$F!"(B#ifndef$B$G$/(B
$B$/$k(B)$B%X%C%@%U%!%$%k$N!V$Y$-Ey(B(A * A = A)$B!W$r2DG=$K$9$k(B(2$BEY0J>e(B
$BFI$_9~$^$l$F$bLdBj$,H/@8$7$J$$(B)$B!#$3$&$9$l$P2?2s(B#include$B$7$F$b(B
$BLdBj$J$$!#(BMakefile$B$rJ]<i$9$k$?$a$N<+F02=%D!<%k(B($B$I$C$A$K$7$F$b!"(B
$B$3$N<j$N%D!<%k$O%W%m%8%'%/%H$,Bg$-$/$J$l$P@dBPI,MW$H$J$k!#<ALd(B
18.1$B$r;2>H$N$3$H(B)$B$O!"F~$l;R$K$J$C$?(B#include$B%U%!%$%k$N0MB84X78(B
$B$r$&$^$/:n$j=P$9!#<ALd(B17.10$B$r;2>H$N$3$H!#(B

References: Rationale Sec. 4.1.2.

10.8:$B%X%C%@(B(#include)$B%U%!%$%k$rA\$9$N$K!"$I$3$rA\$7$K$$$/$N$+!#(B

A:$BF0:n$N:Y$+$$$H$3$m$O=hM}7O0MB8$G$"$k(B($B$H$$$&$3$H$OJ8>O$K$7$F$J(B
$B$1$l$P$J$i$J$$$H$$$&$3$H$r0UL#$9$k!#<ALd(B11.33$B;2>H(B)$B!#DL>o$O!"(B<>
$B$N9=J8$r;}$D%X%C%@%U%!%$%k$J$i(B1$B$D0J>e$"$kI8=`$N>l=j$rC5$7$K9T(B
$B$/!#(B""$B$N9=J8$r;}$D%X%C%@%U%!%$%k$J$i(B"$B8=:_$N%G%#%l%/%H%j(B($B%+%l%s(B
$B%H%G%#%l%/%H%j(B:current directory)"$B$r:G=i$KC5$7$F!"(B($B8+$D$+$i$J(B
$B$+$C$?$i(B) <>$B$N$H$-$HF1$8I8=`$N>l=j$KC5$7$K9T$/!#(B

$B@N$+$i(B($BFC$K(BUnix$B$N%3%s%Q%$%i$G$O(B)$B!"8=:_$N%G%#%l%/%H%j$H$O(B
#include$B$,=q$+$l$?%U%!%$%k$NB8:_$9$k%G%#%l%/%H%j$N$3$H$G$"$k!#(B
$B$7$+$7$J$,$i%3%s%Q%$%i$K$h$C$F$O!"8=:_$N%G%#%l%/%H%j(B($B$=$&$$$&(B
$B$b$N$,$"$C$?$H$7$F(B)$B$H$O%3%s%Q%$%i$r8F$S=P$7$?%G%#%l%/%H%j$G$"(B
$B$k$3$H$b$"$k!#%3%s%Q%$%i$KIU$$$F$-$?;qNA$rFI$`$3$H!#(B

References: K&R2 Sec. A12.4 p. 231; ANSI Sec. 3.8.2; ISO
Sec. 6.8.2; H&S Sec. 3.4 p. 55.

10.9:$B%U%!%$%k$N:G=i$N:G=i$N@k8@$G4qL/$J9=J8%(%i!<$,=P$?!#$h$5$=$&$K(B
$B8+$($k$N$K!#(B

A:#include$B$7$?%U%!%$%k$N:G8e$N@k8@$N=*$o$j$K%;%_%3%m%s(B
$B$rIU$1$k$N$rK:$l$?$N$@$m$&!#<ALd(B2.18, 11.29, 16.2a$B$b;2>H$N$3$H!#(B

10.11:$B;d$N;H$C$F$$$k%7%9%F%`$K$O(B<sgtty.h>$B$,8+Ev$?$i$J$$!#$@$l$+(B
$BAw$C$F$/$l$J$$$@$m$&$+!#(B

A:$BI8=`%X%C%@$O!"7/$,;H$C$F$$$k%3%s%Q%$%i!"%*%Z%l!<%F%#%s%0%7%9%F(B
$B%`!"%W%m%;%C%5$KE,@Z$JDj5A$rM?$($k$h$&$J7A$GB8:_$7$F$$$k!#B>$N(B
$B?M$N%X%C%@%U%!%$%k$r0z$CD%$C$F$-$FF0$/$3$H$r4|BT$9$k$3$H$O$G$-(B
$B$J$$!#$b$A$m$sAj<j$,A4$/F1$84D6-$r;H$C$F$$$k>l9g$OJL$G$"$k!#%3(B
$B%s%Q%$%i$N%Y%s%@!<$K$J$<$=$N%U%!%$%k$,6!5k$5$l$J$+$C$?$+?R$M$F(B
$B$_$k$3$H(B($B$"$k$$$OBe$o$j$rAw$C$F$/$l$k$h$&$K0MMj$7$F$_$k$3$H(B)$B!#(B

10.12:$BJ8;zNs$rHf3S$9$k%W%j%W%m%;%C%5$N(B#if$B<0$O$I$&$9$l$P:n$l$k$+!#(B

A:$BD>@\$K$OIT2DG=$G$"$k!#%W%j%W%m%;%C%5$N(B#if$B$N7W;;$N$H$3$m$K$O@0(B
$B?t$7$+;H$($J$$!#$o$+$j$d$9$$%i%Y%k$r@0?tDj?t$K(B#define$B$7$F!"$=(B
$B$l$i$N%i%Y%k$r;H$C$?>r7o$r<BAu$9$k$7$+$J$$!#(B

$B<ALd(B20.17$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. 4.11.3 p. 91; ANSI Sec. 3.8.1; ISO
Sec. 6.8.1; H&S Sec. 7.11.1 p. 225.

10.13:#if$B$NCf$G(Bsizeof()$B$O;H$($k$+!#(B

A:$B;H$($J$$!#A0=hM}$O%3%s%Q%$%k$NAa$$CJ3,$G!"$D$^$j%G!<%?7?$NL>A0(B
$B$r9=J82r@O$9$kA0$G<B9T$5$l$k!#MxMQ2DG=$J$i(BANSI$B$N(B<limits.h>$BFb$K(B
$B$"$i$+$8$aDj5A$5$l$?Dj?t$r;H$&$+!"(B"$B9=@.(B(configure)"$B%9%/%j%W%H(B
$B$r;H$&$3$H(B($B$b$C$H$h$$$N$O%G!<%?7?$NBg$-$5$K0MB8$7$J$$$h$&$J%3!<(B
$B%I$r=q$/$3$H$G$"$k(B)$B!#(B

References: ANSI Sec. 2.1.1.2, Sec. 3.8.1 footnote 83; ISO
Sec. 5.1.1.2, Sec. 6.8.1; H&S Sec. 7.11.1 p. 225.

10.14:#ifdef$B$r(B#define$B$N9T$K;H$C$F!"$"$k$b$N$r(B2$B$D$N$^$C$?$/0[$J$C$?(B
$BIw$KDj5A$9$k$3$H$,$G$-$k$+!#(B

A:$B$G$-$J$$!#!V%W%j%W%m%;%C%5$r%W%j%W%m%;%C%5$K$+$1$k$3$H$O$G(B
$B$-$J$$!W$H$$$C$?$H$3$m$+!#(B
$B$G$-$k$N$O!"(B#ifdef$B$N@_Dj$K$h$C$F$^$C$?$/JL8D$N(B2$B$D$N(B#define$B$N(B
$B$&$A$N(B1$B$D$r;H$&$3$H$G$"$k!#(B

References: ANSI Sec. 3.8.3, Sec. 3.8.3.4; ISO Sec. 6.8.3,
Sec. 6.8.3.4; H&S Sec. 3.2 pp. 40-1.

10.15:typedef$B$G;H$($k(B#ifdef$B$N$h$&$J$b$N$,$J$$$+!#(B

A:$B;DG0$J$,$iB8:_$7$J$$!#$"$k(Btypedef$B$,Dj5A$5$l$?$+$I$&$+$r%^%/%m(B
($BNc(B MY_TYPE_DEFINED)$B$r;H$C$F5-O?$7$J$1$l$P$J$i$J$$!#(B($B<ALd(B10.13
$B$b;2>H$N$3$H!#(B)

References: ANSI Sec. 2.1.1.2, Sec. 3.8.1 footnote 83; ISO
Sec. 5.1.1.2, Sec. 6.8.1; H&S Sec. 7.11.1 p. 225.

10.16:$B%W%j%W%m%;%C%5$N(B#if$B$r;H$C$F!"%^%7%s$,%S%C%0%(%s%G%#%"%s$+%j(B
$B%H%k%(%s%G%#%"%s$+$rCN$k$3$H$,$G$-$k$+!#(B

A:$B$?$V$s$G$-$J$$(B($B%W%j%W%m%;%C%5$G$N1i;;$O$9$Y$F(Blong$B$G9T$o$l!"(B
$B$=$3$K$O%"%I%l%9$N35G0$O$J$$(B)$B!#K\Ev$K%^%7%s$N%(%s%G%#%"%s$rL@(B
$B<(E*$KCN$j$?$$$N$+!#%(%s%G%#%"%s$r5$$K$7$J$$%3!<%I$r=q$/$[$&$,(B
$B$h$$!#<ALd(B20.9$B$b;2>H$N$3$H!#(B

10.18:$B$3$s$I2!$7IU$1$i$l$?%3!<%I$O(B#ifdef$B$@$i$1$G;d$N<qL#$K$"$o$J$$!#(B
$B$3$N%3!<%I$r>r7o%3%s%Q%$%k$N0lAH$@$1;D$7$F!"(Bcpp$B$rDL$9$3$H$J$/!"(B
$B$+$D(B#include$B$d(B#define$B$OE83+$7$J$$$GA0=hM}$9$kJ}K!$,$"$k$+!#(B

A:$B@$$NCf$K$O(Bunifdef$B!"(Brmifdef$B!"(Bscpp("($BA*Br<0(BC$B%W%j%W%m%;%C%5(B)
selective C preprocessor")$B$H$$$&%W%m%0%i%`$,=P$^$o$C$F$$$F!"$3(B
$B$l$,$^$5$K>e$K=q$+$l$F$$$k5!G=$r;}$D!#<ALd(B18.16$B$r;2>H$N$3$H!#(B

10.19:($BLuCm(B:__DATE__$B$d(B__TIME__$B$N$h$&$J(B)$B$"$i$+$8$aDj5A$5$l$?%^%/%m$N(B
$B0lMw$rF@$k$K$O$I$&$9$l$P$h$$$+!#(B

A:$B2?EY$bI,MW$K$J$k$K$b$+$+$o$i$:I8=`$NJ}K!$H$$$&$N$OB8:_$7$J$$!#(B
$B%3%s%Q%$%iImB0$N;qNA$,Lr$KN)$?$J$$$J$i!"0lHVL\E*$K$+$J$C$?J}K!(B
$B$O!"$?$V$s(BUnix$B$N(Bstrings(1)$B$+$J$s$+$r;H$C$F!"%3%s%Q%$%i$d%W%j%W(B
$B%m%;%C%5$N<B9T%U%!%$%k$+$iJ8;zNs$r=&$$$@$9$3$H$G$"$m$&!#=>Mh(B
$B$N!"%7%9%F%`$4$H$GM=$a(B#define$B$5$l$?<1JL;R(B($BNc(B:unix) $B$O!"5,3J0c(B
$BH?$G$"$k$+$i(B($B$3$l$i$N<1JL;R$O%f!<%6!<$NL>A06u4V(B(name space)$B$H(B
$B>WFM$9$k(B)$B!":o=|$5$l$?$jL>A0$rJQ99$5$l$?$3$H$KCm0U$9$k$3$H!#(B

10.20:$B<1JL;R$r%^%/%m$r;H$C$F:n$j=P$9!"0J2<$N8E$$%3!<%I$r;H$C$F$$$?!#(B

#define Paste(a, b) a/**/b

$B$G$b$b$&F0$+$J$/$J$C$F$7$^$C$?!#(B

A:$B$3$l$O(BC$B$NNr;K$N=i4|$N%3%s%Q%$%i(B($BM-L>$J$N$O(BJohn Reiser$B$,=q$$$?(B
$B$b$N(B)$B$N$$$/$D$+$,;}$C$F$$$?Hs8x3+$N5!G=$G$"$C$?!#$D$^$j%3%a%s(B
$B%H$O$^$k$C$-$j>C$($F$J$/$J$C$F$7$^$&$N$G!"%H!<%/%s$NO"7k$K;H$((B
$B$k$H$$$&$b$N$,$"$C$?!#(BANSI$B5,3J$O(B(K&R1$B$HF1MM(B)$B!"%3%a%s%H$O6uGr$K(B
$BCV$-49$($i$l$k$HL@8@$7$F$$$k!#$7$+$7!"%H!<%/%s$rO"7k$7$?$$$H$$(B
$B$&MW5a$,=P$5$l!"$=$NMW5a$O8=<BLdBj$KB($7$?$b$N$G$"$C$?$+$i!"%H!<(B
$B%/%s$rO"7k$9$k1i;;;R(B##$B$r(BANSI$B5,3J$OE,@Z$KDj5A$7$FF3F~$7$?!#(B##$B$O(B
$B0J2<$N$h$&$K;H$&$3$H$,$G$-$k!#(B

#define Paste(a, b) a##b

$B<ALd(B11.17$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 3.8.3.3; ISO Sec. 6.8.3.3; Rationale
Sec. 3.8.3.3; H&S Sec. 3.3.9 p. 52.

10.22:$B$J$<0J2<$N%^%/%m(B

#define TRACE(n) printf("TRACE: %d\n", n)

$B$G!"!VJ8;zNs%j%F%i%k$NFbIt$N%^%/%mCV49!W$H$$$&7Y9p$,=P$k$N$+!#(B

TRACE(count);
$B$r(B

printf("TRACE: %d\count", count);

$B$HE83+$7$F$k$h$&$@!#(B

A: $B<ALd(B11.18$B$r;2>H!#(B

10.23-4: $B%^%/%m$NE83+$GJ8;zNs%j%F%i%k$NFbB&$G0z?t$r;H$$$?$$!#$I$&$9$l$P(B
$B$h$$$+!#(B

A:$B<ALd(B11.17$B$H(B11.18$B$r;2>H!#(B

10.25:$B%3%s%Q%$%k;~$K6E$C$?=hM}$r$7$?$$$,!"$I$&$d$C$F(Bcpp$B$K$d$i$;$?$i(B
$B$h$$$+$o$+$i$J$$!#(B

A:cpp$B$OHFMQ$N%W%j%W%m%;%C%5$H$7$F$O:n$i$l$F$$$J$$!#(B($BJL%W%m%0%i%`(B
$B$H$7$F;H$&$3$H$,$G$-$k$3$H$5$(J]>Z$5$l$F$$$J$$(B)$B!#IT;w9g$$$J$3(B
$B$H$r(Bcpp$B$K$5$;$k$h$j$O!"FCJL$JMQES$N$?$a$NA0=hM}$r9T$&%D!<%k$r(B
$B<+J,$G:n$C$?$[$&$,$h$$!#(Bmake(1)$B$N$h$&$JF;6q$r;H$($P!"<+F0E*$K(B
$B;E;v$r$5$;$k$3$H$,$G$-$k!#(B

$B$b$7(BC$B8@8l0J30$N$b$N$rA0=hM}$9$k$3$H$r9M$($F$$$k$N$G$"$l$P!"HF(B
$BMQ$N%W%j%W%m%;%C%5$r;H$&$3$H$r9M$($k$3$H!#(B($B$?$$$F$$$N(BUnix$B%7%9(B
$B%F%`$G;H$($k8E$/$+$iB8:_$9$k%D!<%k$H$7$F$O(Bm4$B$,$"$k(B)$B!#(B

10.26:$B2DJQ8D$N0z?t$r<h$k(Bcpp$B$N%^%/%m$r$I$&$d$C$F=q$1$P$h$$$+!#(B

A:$BM-L>$J%H%j%C%/$O!"0z?t$r(B1$B$D<h$k%^%/%m$rDj5A$7!";H$&$H$-$K$b0z(B
$B?t$r3g8L$G$/$/$k$H$$$&$b$N$G$"$k!#$=$&$9$l$P%^%/%m$rE83+$7$?$b(B
$B$N$O3g8L$b2?$b$+$b(Bprintf$B$N$h$&$J4X?t$N0z?t%j%9%H$K$J$k!#(B

#define DEBUG(args) (printf("DEBUG: "), printf args)

if(n != 0) DEBUG(("n is %d\n", n));

$BL@$i$+$J7gE@$O!";H$$<j$,M>7W$J3g8L$rIU$1$k$3$H$r3P$($F$*$+$J(B
$B$1$l$P$J$i$J$$$3$H$G$"$k!#(B

gcc$B$O3HD%5!G=$H$7$F4X?t7?$N%^%/%m$,2DJQ8D?t$N0z?t$r<h$k$3$H$r(B
$B5v$7$F$$$k!#$7$+$7$3$l$OI8=`$G$O$J$$!#JL$NJ}K!$O!"0z?t$N?t$K1~(B
$B$8$FJL$N%^%/%m(B(DEBUG1$B!"(BDEBUG2$B$J$I(B)$B$rMQ0U$9$k$3$H$d!"0J2<$N$h$&(B
$B$K%3%s%^$r;H$&$3$H$G$"$k!#(B

#define DEBUG(args) (printf("DEBUG: "), printf(args))
#define _ ,

DEBUG("i = %d" _ i)

$B$=$l$h$j$OE,@Z$KDj5A$5$l$?J}K!$G2DJQ8D$N0z?t$r07$&FC@=$N4X?t$r(B
$B:n$k$[$&$,$h$$!#<ALd(B15.4$B$H(B15.5$B$r;2>H$N$3$H!#(B($B%^%/%mCV49$,I,MW(B
$B$J$i!"4X?t$H(B#define printf myprintf$B$N$h$&$J4X?t7?$G$J$$%^%/%m(B
$B$r;H$&!#(B)

