


		        	      


		   	    





                                 (c) 㯭 .. ॢ  ᪮,
                                                   1.1, 03.04.96.
                                     E:mail: krupnik@sci-nnov.ru

           ⮩ ७樨. 
訥 ,  ⢥       祢,   ࠧ
   ६ ⥫   騥 ⪫   㤭
ࠢ  ४ ⢥⠬,   .

     ⮬ 㬥, 㡫㥬 筮,  ⪠ ⢥ 
⠪  ᭮  ⪮, ⮡ 㦤 ⠫  ⢮묨, 
 頫 ﭭ  ᭮ ਭ樯.

     ᯨ᮪ ᮢ  ⢥⮢   ⥫쭮 祭
襣 祡  ࠢ筨   . ,   ᮬ 
 ⮩ ७樨,   ⠪ ᭮    ᪮쪮
⠪ , ⥫쭮   ࠧ. ⢮    㪮 
 ,  ᮦ,  ᮪;     ⪨
㢥  ,   㬥 ⠥ ࠧ.
᪮쪮 㦨     ᫥  䨨.
   ⢥ ᮤঠ 뫪     쭥襣 祭
騬  㢫祭 ⥫. (   ࠧ筮 㬥樨
㬥⮢ ANSI  ISO ⠭⮢ ; .  5.1).

᫨   	,	騩 몠 ,    ⢥  
㬥, ⠩ 	⢥    ᫥  ,
    , ० 祬 ᯮ짮 .  
⫨ ⢥   ,  ⢮  ⢥⮢ 
    ,   饥   ਢ祭 ⥫ ᫮
ᮢ,   㣭騬.  ᫨      砭 
⮬ 㬥, ᯮ, , ஭  --   
⢥ ਧ ᭨ 㧪  ,   㢥 .

஬ ᯨ᪠    ᮢ,  ⮬	㬥 㬬஢
   ⢥.  ᫨  ⮪ 몠 ,  
६, ⮡  ᬮ  㬥,  ⮣   ਤ 
 ६  砥,  - ⨫ , ⢥  
㦥 .

 㬥   ᫥ ࠧ  1 ५ 1995	, 	 ६
⢨   	ᨫ쭮 㤠  ᢮ 筨 -  USENET.
  	, , ५, ᮡ	᫨ 	ᬮ ⢥
  䠩,	㦥  - ⭮ ࢥ  ᯨᠭ
 CD-ROM. ᥣ    ᫥ । ⮣ 䠩
१  ftp ftp.eskimo.com, rtfm.mit.edu, or ftp.uu.net (.  17.12
 17.33), , ᫠ ஭ ⮩ ᮮ饭 "help"  
mail-server@rtfm.mit.edu . ( ⠪  ,   㬥
।祭  ᢮ ࠭. 	    ).

   㣨	ᨨ ⮣ 㬥.	   頥
᮪饭   ( 뫨 ) ᯨ᮪ ࠧ稩  ⥪饩
 ।饩 ᨥ. ᪮쪮 ।⥫ ⥪⮢ ᨩ
㬥 㯭 १ world-wide web (WWW). 
<http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html> 
<http://www.lysator.liu.se/c/c-faq/index.html>.	 ,  , 
।⠥   ९ (  ஡ ⢥   襥 ᫮
ᮢ!), ⥫⢮ Addison-Wesley ᥭ 1995 㡫  
 ᮢ  ⢥⮢ (ISBN 0-201-84519-9).

  ⨬ 㬥⮬  ﭭ. ⥫쭮   ⨥.
ਨ ࠢ   scs@eskimo.com .

⢥   ࠧ  ⥬:

	 1. 㫥 㪠⥫
	 2. ⥫ 	ᨢ
	 3. 뤥 
	 4. ࠦ
	 5. ANSI C
         6. ९ 
         7. ᪨ 㬥⮢ ६ 
         8. 㫥 ࠦ  ६
         9. , ᫥  ꥤ
	10. 樨
        11. C⠭ /뢮
        12.  㭪樨
	13. Lint
	14. ⨫
        15. 樨  饩 窮
        16. 䥩  樮 ⥬
	17.  (ॡࠧ Fortran -> C , ࠬ⨪ 	YACC  ..)


 ᥬ ਫ     ⢥ 	.


      1. 㫥 㪠⥫

1.1:    ᪠ -⠪  ᫮ 㫥 㪠⥫.

:        ⨯ 㪠⥫  (ᮣ᭮ । 몠)
	ᮡ 祭	- "㫥 㪠⥫", ஥ ⫨筮   㣨
        祭   㪠뢠  - ꥪ  㭪. 
        ࠧ,   &,  ᯥ 맮 malloc()  
        ਢ   㫥 㪠⥫. (malloc 頥 㫥
        㪠⥫,   뤥  㤠,   ⨯ ਬ
        ᯮ짮 㫥 㪠⥫  ᮡ 稭, 
        ᪮쪮   "  뤥"  "⥯    
        㪠뢠". )

        㫥 㪠⥫ ਭ樯쭮 ⫨砥  樠஢
        㪠⥫.  ⭮,  㫥 㪠⥫  뫠   
        ꥪ; 樠஢ 㪠⥫  뫠   㣮.
        . ⠪  3.1, 3.13,  17.1.

         ਢ  । 㦥 㯮,  
        㫥 㪠⥫   ⨯ 㪠⥫,  ७ 祭
        㫥 㪠⥫ ࠧ ⨯  ⫨.  ணࠬ⠬
         易⥫쭮  ७ 祭,  ᥣ
        室 ଠ  ⨯ 㪠⥫, ⮡ ࠧ 㫥
        㪠⥫,   㦭 (. ).

        :  K&R I . 5.4 c. 97-8; K&R II . 5.4 c. 102; H&S
        . 5.3 c. 91; ANSI . 3.2.2.3 c. 38.

1.2:     "" 㫥 㪠⥫  ணࠬ?

:       몥  ⠭ 0,   ᯮ  㪠⥫,
        ८ࠧ ஬  㫥 㪠⥫.  , ᫨ 
        ६ 樠樨, ᢠ  ࠢ   ஭
        ⮨ ६  ࠦ, 饥 ⨯ 㪠⥫, 
        蠥,  ⠭ 0  㣮 ஭  ॢ 
        㫥 㪠⥫   㫥 㪠⥫ 㦭 ⨯.
        ⥫쭮, ᫥騩 ࠣ ᮫⭮ ४⥭:

	       char *p = 0;
	       if(p != 0)

        , 㬥, । 㭪樨,  易⥫쭮 㤥
        ᯮ  祭 㪠⥫,     
        ᯮᮡ ᯮ  0  㫥 㪠⥫. ਬ,
        ⥬ 맮 UNIX "execl" ᯮ  ⢥ ࠬ஢
        ६ ⢮ 㪠⥫  㬥, 蠥 㫥
        㪠⥫. ⮡  㫥 㪠⥫  맮 㭪樨,
        筮 室  ਢ ⨯, ⮡ 0 ਭ 
        㫥 㪠⥫.

		execl("/bin/sh", "sh", "-c", "ls", (char *)0);

        ᫨   ८ࠧ (char *),   ,
	 室 ।	㫥	㪠⥫   ⮣ ।
        ᫮ 0. (,   㪮⢠  UNIX ࠢ쭮
          ਬ.)

         ⨯ 㭪権 室   , ।
        㬥⮢   ᮮ⢥⢨  ⨯  設⢮ ਢ
        ⨯   饭, ⠪  ⨯ 㪠뢠 , 
        室 㪠⥫ । ⨯,   ࠢ쭮
        ८ࠧ 㫨  㪠⥫. ⨯ 㭪権  , ,
        ᯥ ࠢ쭮 ८ࠧ ⨯  砥,  㭪
         ᯨ᮪ 㬥⮢ ६ , ⠪   ⠪
        㬥⮢ 室  ८ࠧ ⨯. ᥣ ᭥
         ८ࠧ  㫥 㪠⥫, ⮡  ⪭ 
        㭪  ६ ᫮ 㬥⮢   㭪  ⨯,
        ⮡ ६ ᯮ짮 -ANSI , ⮡
        த஢,   ,  . (, ᠬ
        ⮥ ࠢ  .)

	⮣:
	      ᯮ짮	0	 室 ८ࠧ

	       樠		 맮 㭪樨,	⨯ ன
					   

               ᢠ              ६ ᫮ 㬥⮢
					  맮 㭪樨
	       ࠢ

	       맮 㭪樨, ⨯
	         ,
	       ⢮ 㬥⮢
	       䨪஢

        : K&R I . A7.7 c. 190, . A7.14 c. 192; K&R II
        . A7.10 c. 207, . A7.17 c. 209; H&S . 4.6.3 c. 72; ANSI
        . 3.2.2.3 .

1.3	 ⠪ NULL   	।   #define?

O:       ணࠬ⠬  ࠢ 㫨, ᯮ冷筮 ࠧᠭ 
        ணࠬ.  ⮩ 稭  ९ NULL । 
        <stdio.h>  <stddef.h>  祭 0 ( (void *) 0,  ⮬
        祭 ਬ .)  ணࠬ,    ࠧ
        0  楫  0  㫥 㪠⥫  ᯮ짮 NULL  
        ,  室 㫥 㪠⥫.   ⮫쪮 ⨫᪮
        ᮣ襭; ९ ८ࠧ NULL   0,  ⥬
        ᯮ ஬  ᮮ⢥饬 ⥪  㫥
        㪠⥫.   ⤥   । ࠬ஢ 㭪樨,
           ॡ  㪠 ⨯ । NULL ( 
        । 0).  (   1.2 ਫ   NULL, ⠪   0).

	NULL 㦭 ᯮ짮	_⮫쪮_  㪠⥫; .  1.8.

        : K&R I . 5.4 c. 97-8; K&R II . 5.4 c. 102; H&S
        . 13.1 c. 283; ANSI  . 4.1.5 c. 99, . 3.2.2.3 c. 38,
        Rationale . 4.1.5 c. 74.

1.4:	 #define  । NULL  設, ᯮ
        㫥    ७ ।⠢ 㫥
        㪠⥫?

:	ணࠬ⠬  室	 ७ ।⠢()
	㫥	㪠⥫,   ⮬ 筮  .
	᫨ 設 ᯮ 㫥   ।⠢ 㫥
	㪠⥫,  ᮢ  ஢	 , 
	ணࠬ 砥 㫥 㪠⥫  "0"  NULL.
	⥫쭮, । NULL	 0  設,  ன 㫥
	㪠⥫ ।⠢ 㫥묨 祭ﬨ ⠪  ࠢ୮ 
	   㣮, ⠪    (	) ஢
	४ 祭 㫥 㪠⥫  ⢥  0, ⨢訩 
	ᮮ⢥饬	⥪

1.5	 NULL  । ᫥騬 ࠧ:

		#define	NULL ((char *)0).

	  ,  㭪  । NULL  ८ࠧ
	⨯?

:	 饬, . ஡  ⮬,   , 
	ᯮ ࠧ ७	।⠢  㪠⥫ 
        ࠧ ⨯ . । । १ #define
	,  㭪   ⢥ ।	ࠬ
        㪠⥫  char,    ஡  ।
        㪠⥫  ६ 㣨 ⨯,  ୠ 

		FILE *fp = NULL;

	  ࠡ.

          , ANSI C ᪠ 㣮 ।  NULL:

		#define NULL ((void *)0)

        ஬   ࠡ ४ ணࠬ ( ⮫쪮  砥
        設,  㪠⥫  ࠧ ⨯   ࠧ, ⠪
           ᮬ⥫쭠)  ।  
        ணࠬ,  ୮ ᯮ NULL (ਬ,  
        室 ᨬ ASCII NUL; .  1.8).

        : ANSI Rationale . 4.1.5 c. 74.

1.6:	 ᯮ 

		#define	Nullptr(type) (type *)0	,

           ⨯ 㫥 㪠⥫.

:	    ७  । 㣠,  ⮨ .
	  㦥 	ࠢ  ᢠ; .  1.2.  
	  㪢.  ᯮ짮 뢠	⮬,  ⠥
	ணࠬ,   ஢ ""  㫥 㪠⥫,  ॡ
        ࠧ  ⭮ ஢ન । , 
        ᯮ짮  __ ⠫ 砥 ਬ 㪠⥫.
        . ⠪  8.1.

1.7:	४⭮  ᯮ짮 ᮪饭 ᫮ 	if(p) 
        ஢ન ⮣,  㪠⥫ 㫥?   ᫨ ७
        ।⠢  㫥 㪠⥫ ⫨筮  ?

:        ॡ ᪮ 祭 ࠦ (  if,
	while, for,  do   ஢ &&, ||, !,  ?:) 祭 false
	砥,  ࠦ ࠢ ,	 祭 true	砥 
	⨢	砥.	 ࠧ, ᫨ ᠭ

		if(expr)

         "expr" - ந쭮 ࠦ,   ᠬ 
        㯠 ⠪,   뫮 ᠭ

		if(expr != 0)

	⠢ ਢ쭮 ࠦ, ᮤঠ饥 㪠⥫ "p" 
	"expr",	稬

		  if(p)	       ⭮	       if(p != 0)

	  砩,  ந室 ࠢ, ⠪   ,
           -  㫥 㪠⥫  㤥 ᯮ짮
        ࠢ쭮 祭.    ,  ࠡ
	 ⠪  	 		 .	७
	।⠢ 㪠⥫	__  祭.

         ᪮ 栭 !   ᠭ ⠪:

		  !expr	   ᠬ 	⭮	expr?0:1

	⥫ । 	⢥ ࠦ , 

		  if(!p)      ⭮	      if(p == 0)

	 "᮪饭" ⨯ if(p) ᮢ襭	४, - ⠥
	 ᯮ짮 	⨫.

	. ⠪  8.2.

        : K&R II . A7.4.7 c. 204; H&S . 5.3 c. 91; ANSI
        . 3.3.3.3,  3.3.9, 3.3.13, 3.3.14, 3.3.15, 3.6.4.1, 
	3.6.5 .


1.8:	᫨ "NULL"  "0" ,	     ᯮ짮?

:	 ணࠬ ,  "NULL"  ᯮ짮  
        ࠦ, ᮤঠ 㪠⥫    ⮬,  祭
         ᬠਢ  㪠⥫. 㣨  , 
        ⠭, 㦠 "NULL"  "0", ⮫쪮 㡫, ᫨ "0"
           #define  । ᯮ짮 "0" 
	"NULL".	 ⢥ ⢥  . ணࠬ   
        ,  "NULL"  "0" 塞   "0" 
        ८ࠧ ⨯    ᮬ ᯮ짮 
        樠樨, ᢠ  ࠢ.   ᯮ짮 "NULL"
        ( ⨢ "0" )  ᬠਢ  稢
        ,  ᯮ 㪠⥫; ணࠬ⠬  㦭
        祣  (  ᢮ ᮡ⢥ , ⠪  
        )  ⮣, ⮡ ⫨ 㫥 㪠⥫  楫
        ᫠ 0.  NULL __ ᯮ짮,  室 㣮 ⨯ .
             ᫨   㤥 ࠡ,  窨 ७ ⨫
        ணࠬ஢  .(ANSI  । NULL  
        #define  (void *)0.   ।   ᯮ짮
        NULL ⠬,   ࠧ㬥 㪠⥫). ᮡ  ४
        ᯮ짮 NULL ⠬,  ॡ 㫥  ASCII (NUL). ᫨
        室,  ᮡ⢥ ।

		#define NUL '\0'

        : K&R II . 5.4 c. 102.


1.9	    㤥 ᯮ짮 NULL ( 0)  砥, 
	祭 NULL ,  ,    㫥
	७ ।⠢ 㫥 㪠⥫?

:	.  ᨬ᪨	⠭ 	ᯮ  ᥫ
	- ⮣, 	᫠  ,	  砥	稭, 
        ன ᯮ NULL, .  ࠧ ਬ:  ࠭,
         0, 祭 ⠬,   ⥪ ࠧ㬥 㪠⥫,
        㤥  ஬  㫥 㪠⥫. NULL ᯮ
        ⮫쪮  窨 ७ 襣 ⨫ ணࠬ஢.

1.10:     ﭭ. ࠭,  NULL ࠢ 0,  㫥
	㪠⥫ ?

:	ନ "null"  "NULL"   ᮢᥬ 㬠 ᯮ짮
	 ᪮쪨 ᫠:

	1.	㫥	㪠⥫  ࠪ⭮ ⨥ 몠, ।
		  1.1.  ।⠢  ...

        2.      ७ ( ⠤ 믮) ।⠢ 㫥
                㪠⥫, ஥   ⫨筮    ࠧ
                 ࠧ ⨯ 㪠⥫.  ७ ।⠢
                㫥 㪠⥫   ⮫쪮 ᮧ⥫
                .  ணࠬ⠬    ।⠢ 
                ⭮, ᪮  ᯮ...

	3.	⠪᪮ ᮣ襭  㫥 㪠⥫, ᨬ
		"0".    ᯮ...

	4.	 NULL    #define ।	 "0"
		 "(void *)0". ,   ...

	5.	㫥	 ASCII (NUL),  ஬   ࠢ ,	
			  饣  㫥 㪠⥫,	ࠧ 
		 宦; ...

	6.	"㫥 ਭ", ,    ᠬ,	⮩ ਭ ("").
		 ନ	"㫥 ਭ"  ਢ  ⠭  	,
                 ,  ᫥ , ⠪  ⮩ ਭ
                 砥 ᨬ '\0',   㫥 㪠⥫,   
                 㦥   ...

         ⮬ 㬥 ࠧ "㫥 㪠⥫" (ய묨 㪢)
	ᯮ  ᫥ 1, ᨬ	"0"  ᫥ 3,	 ᫮	"NULL",
	ᠭ 訬 㪢,  ᫥ 4.

1.11:	祬 ⠪  ⠭ 易  㫥묨 㪠⥫ﬨ? 祬
	⠪   ?

:      ணࠬ   ࠤ樮   , 祬  室
         ணࠬ஢,  ७ ।⠢ .   䠪,
         ७ ।⠢ 㫥 㪠⥫  設⢠
        設 ᮢ   ।⠢  室 ⥪, .. 㫥,
        ᯮᮡ   饭. ᯮ짮 
        (NULL) ।,  祭  ᫥⢨ , 
         㣮 祭  - .  
        "if(p == 0)"   ⮫ ୮,  ८ࠧ ।
        ࠢ p  楫 ⨯,   0  ⨯ 㪠⥫.  , 
         ,  ନ "null" 㯮ॡ  ࠧ ᫠
        (᫥ ).

	訩	ᯮᮡ ࠭ ⠭ - ࠧ,	   
        祢 ᫮ (, nil,   ᪠), ஥ 砥
        㫥 㪠⥫.   ॡࠧ "nil"  㫥
        㪠⥫ 㦭 ⨯,  ᮮ頥  訡,  ⮣ ᤥ
	.	 ᠬ , 祢	᫮  㫥 㪠⥫  
        -   "nil"  "0".  祢 ᫮ ࠡ⠥ ᥣ, 
        ᪫祭 ,   ਭ  室饬
	⥪ "0"  㪠 ⨯	 楫 ᫮, ࠢ	, 
        ⮣, ⮡ ᮮ  訡. ணࠬ   ࠡ, ᫨
        ।,  "0"   㪠 ⨯ -  㫥
        㪠⥫.

1.12:       ⥫⢥.  ⠪   ⭠   㫥묨
        㪠⥫ﬨ.

:	   ࠢ:

	1.	  祭  室 ⥪ 㫥 㪠⥫,
		 ᯮ "0"  "NULL".

        2.       ᫨ "0"  "NULL" ᯮ  䠪᪨
                 㬥  맮 㭪樨, ਢ   ⨯ 㪠⥫,
                   뢠 㭪.

        ⠫쭠  ᨨ 饭 㣨 㦤, 易 
        㫥묨 㪠⥫ﬨ, ७ ।⠢ 㫥 㪠⥫
        (஥    易⥫쭮),  ⠪ ᮢ襭⢮
        ⠭ ANSI C.    ⢥   1.1, 1.2,  1.3, 
        ⠪   1.8  1.11,   㤥 ଠ쭮.

1.13:	뢠   ⠭, 易  㫥묨	㪠⥫ﬨ, 	
	  ॡ, ⮡ 	७ ।⠢ 뫮 㫥?

:	᫨ 稭 ⮫쪮  ⮬,  㯠 ⠪ 뫮  ࠧ㬭,	⠪
	 	ࠢ ࠭  ॠ,  (
	⠪ ࠭祭) 㤥 ⢥ ࠧ ।⠢ 㫥
	㪠⥫ ᯥ樠묨,	⫨묨   祭ﬨ, ᮡ 
	 祭 ⮬᪨  뢠 ᯥ樠 
	뢠, 易 	 㯮.

	஬ ⮣, 	 ॡ   ࠪ⨪?  㫥
        㪠⥫  ॡ   ⮬, 㫥  㫥 
        ७ ।⠢. ।  ⮬,  ७
        ।⠢ 㫥,  ਢ  饭  ( ᪫祭
         砥 ᮬ⥫쭮 ᯮ짮 calloc; . 
        3.13).  ⮣,  ७ ।⠢ ࠢ , 
         맮 㭪権, ⠪  _ࠧ_  㪠⥫  
        ⫨  ࠧ 㪠⥫  int.  (᫨  "0" 
        祭 㫥 㪠⥫ ᯮ짮 "nil" (.  1.11),
        室  㫥 ७ ।⠢ 㫥 㪠⥫
           ).

1.14:     ᫨ ⭮,  - ॠ쭮 設 ᯮ
        㫥 ७ ।⠢ 㫥 㪠⥫  ࠧ
        ।⠢  㪠⥫ ࠧ ⨯?

:	 Prime 50 ᯮ ᥣ 07777, ᬥ饭 0 	㫥
        㪠⥫,  ࠩ ,  PL/I.    ᯮ
        ᥣ 0, ᬥ饭 0  㫥 㪠⥫ ,  
        室묨  樨, ⠪  TCNP (஢ 㫥
        㪠⥫ ),    ᮢ⨬  楫訬
        ᪢୮ ᠭ묨  ணࠬ, ᭮묨  
        ।.  設 Prime  樥 ᫮ 뫨 砫쭮
         ⥬,  㪠⥫   (char *)   뫨 襣
        ࠧ, 祬 㪠⥫  ᫮ (int *).

         Eclipse MV ௮樨 Data General   ⭮
        ন ⨯ 㪠⥫ (㪠⥫  ᫮,   ), 
	  - char *  void * ᯮ ࠬ	. ⥫
	word * ᯮ   㣨 .

	 業ࠫ  Honeywell-Bull	ᯮ  06000
	 ७	।⠢ 㫥 㪠⥫.

	 CDC Cyber	180 ᯮ 48- 㪠⥫, 騥 
         (ring), ᥣ  ᬥ饭. 設⢮ 짮⥫
	(  11)   ⢥ 㫥 㪠⥫  0xB00000000000.

	᪠ -設  ⥣ ⥪ன   
	㯮ॡ⥫ 㪠⥫;	 ᯮ  <NIL,0> (
        , 騩 <ꥪ, ᬥ饭> 奭)  㫥
        㪠⥫ .

         ᨬ   ,  80*86 (PC) 
        ᯮ짮  16- 㪠⥫    32- 㪠⥫
         㭪樨,  , , 32- 㪠⥫    16-
        -  㭪樨.

	  HP 3000 ᯮ ࠧ 奬 樨  ⮢
          ᫮. ⥫  char   void, , ᫥⥫쭮,
        㣮 ।⠢, 祬 㪠⥫  int (   ..),
	 ᫨ 	.

1.15     砥 訡  ६ ᯮ "null pointer assignment"
        (  㫥 ).    ᫥?

:	 ᮮ饭  ⮫쪮	 ⥬ MS-DOS (., ᫥⥫쭮,
        ࠧ 16)   砥,  ந諠    
        樠஢,  㫥 㪠⥫  㫥 .

        ⫠稪 筮  ⠭  ⠭  㯥 
        㫥 . ᫨  ᤥ ,   ᪮஢ 
	20 	  0   	ਮ᪨ ஢,	 
	  .


	2. ⥫  ᨢ

2.1:	 	䠩 	  ᠭ char	a[6]   㣮	 
	extern char *a.	祬   ࠡ⠥?

:	 extern char *a   ᮢ 	⥪騬	।.
	 "⥫--⨯-"  ࠢ ⨯ "ᨢ-⨯-".	ᯮ
	extern char a[].

2.2:	  蠫,  char a[] ⭮ char *a.

:	祣 . (,   蠫, ᠥ	ଠ ࠬ஢
	㭪権, .  2.4.) ᨢ -  㪠⥫.  ᨢ
	"char a[6];" ॡ ।    ᨬ, ஥
	㤥 ⭮   "a".  ,	   
	"a",  ஥   饭 6 ᨬ.  㣮	஭,
	 㪠⥫ "char *p;"	ॡ	 ⮫쪮  ᠬ
        㪠⥫. ⥫ 㤥 ⥭   "p"   㪠뢠
          ᨬ ( 뢭 ᨢ ᨬ).

         筮,   ࠧ 㢨, 祬  ࠧ .
        

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

	த	 ,  	 ।⠢ ⠪:

		  +---+---+---+---+---+---+
	       a: | h |	e | l |	l | o |\0 |
		  +---+---+---+---+---+---+

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

         ,  뫪 ⨯ [3] ஦ ࠧ  
        ᨬ  ⮣, ᨢ   㪠⥫. ᫨  ਢ
         , ,   砥  ࠦ [3],
          , 騩 ६     "a",
	६頥 	 ᨬ ।  ⥬ ⠥ ॡ㥬 ᨬ.
         砥 ࠦ p[3]   , ⮡  
	樨	"p", 뢠 祭	㪠⥫, ਡ 	㪠⥫
        3 , , ⠥ ᨬ,   㪠뢠 㪠⥫.  襬
        ਬ  a[3]  p[3]  ࠢ 'l',   砥
         ᨬ -ࠧ. ( ⠪  17.19  17.20.)

2.3:	   	 "⭮ 㪠⥫  ᨢ"
	 ?

:        ⠭  㪠⥫   ந室 
         ⮣ ⢥ত. "⭮" 㪠⥫ 
        ᨢ     ⮫쪮  筮,  
        塞.

	"⭮" ⭮  ᫥饬 祢 ।:

		祭 [.  2.5] ⨯ ᨢ-, ஥ 
		 ࠦ, ॢ頥 ( ᪫祭  砥)	
		㪠⥫    ᨢ; ⨯ १饣
		㪠⥫ - 㪠⥫--.

	(᪫祭 ⠢ 砨,  ᨢ 뢠	࠭
        sizeof,  &  樠஬ ᨬ쭮 ப 
        ᨢ .)

        ᫥⢨ ⮣ ।  ⭮ ࠧ  
         ஢ [], ᫨  ਬ  ᨢ 
        㪠⥫. ᭮ ࠢ, ਢ ,  ࠦ ⨯
        [i] 뫪  ᨢ "a" ॢ頥  㪠⥫  쭥
         ந室 ⠪,    ࠦ 
        㪠⥫ p[i] (    㤥 ࠧ,  ᠭ 
        ⢥   2.2).    砥 ࠦ x[i],   - ᨢ
         㪠⥫) ࠢ  । *((x)+(i)).

        :  K&R I .5.3 c.93-6; K&R II .5.3 c. 99; H&S
        .5.4.1 c. 93; ANSI  .3.2.2.1, .3.3.2.1,
        .3.3.6 .

 2.4:	 祬 	㪠⥫  ᨢ 塞 
	 ⢥ ଠ ࠬ஢?

 :	 	ᨢ	 ॢ	 㪠⥫, ᨢ  ᠬ
	 	।  㭪.  饬	ࠢ,  宦 
	ᨢ	 ࠬ

		f(a)
		char a[];

	ᬠਢ	஬  㪠⥫, ⠪	 ᫨  ।
	ᨢ,	㭪	:

		f(a)
		char *a;

	 ॢ饭	ந室 ⮫쪮  ଠ ࠬ஢ 㭪権,
	 . ᫨  ॢ饭 ࠧࠦ ,  ;
	 諨 	뢮,	 ஦	⨬ ⠭ ॢ訢
        讥 २⢮  ⮣,   ᬮ  맮
        㭪樨 /   ⮬,  ࠬ 㤥 ᯮ짮
         㭪樨.

        : K&R I .5.3 c. 95, .A10.1 c. 205; K&R II
        .5.3 c. 100, .A8.6.3 c. 218, .A10.1 c.226; H&S
        .5.4.3 c. 96; ANSI  .3.5.4.3, .3.7.1, CT&P .3.3
        c. 33-4.

2.5	 ᨢ   祭	⨯ lvalue, ᫨  ᢮
	 祭?

:	⠭ ANSI C	। "㥬 lvalue",  ᨢ 
        ⮬  ⭮.

        : ANSI . 3.2.2.1 c. 37.

2.6	祬 sizeof ࠢ쭮 । ࠧ ᨢ,  ।
	㭪樨	 ⢥ ࠬ?

:	 sizeof	ᮮ頥 ࠧ	㪠⥫,   ᠬ 
	砥 㭪. (.  2.4).

2.7	- ᭨	,  ᨢ  	ᠬ  ⮫쪮 ﭭ
	㪠⥫.

:       ᫨誮 讥 饭.  ᨢ -  ⠭,
        ᫥⥫쭮,   ᢮ 祭,  ᨢ -  
        㪠⥫,     ᭮  ⢥   2.2  
        ⨭, 饭 ⠬ .

2.8     C ࠪ᪮ 窨 ७  祬 ࠧ  ᨢ 
        㪠⥫ﬨ?

:      ᨢ ⮬᪨ १ࢨ ,    
        ᯮ    ࠧ. ⥫    ⠪,
        ⮡  㪠뢠  ࠭ ⮪  (  
        malloc),      襬  ८। (.. 㤥
        㪠뢠  㣨 ꥪ) , ஬ ⮣, 㪠⥫  
        㣨 ਬ, ஬ 㦡  ⢥   
        .

	 ࠬ ⠪ 뢠	⭮	ᨢ  㪠⥫ (.
         2.3), ᨢ  㪠⥫  뢠 塞묨.
        ᮡ  ᠥ  , 뤥 㭪樥 malloc,
        㪠⥫    ᯮ  騩 ᨢ. (
            뫠, ᯮ [], c.   2.14,
         ⠪  17.20.)

2.9	 ⪭㫠 	 , ᮤঠ騩 "ࠦ" 5["abcdef"].
	祬 ⠪ ࠦ 	 ?

:	, द,  	 ᨢ  ⠢  . 
	 䠪 ᫥  । 樨	१ 㪠⥫, 
        , a[e] 筮 *((a)+(e)),  __ ࠦ  
        ᭮ ࠦ ,        㤥 㪠⥫,
         㣮 楫᫥ ࠦ.   ⨢
          ࠭ म 㯮  -⥪,   ।
	ॢ 	⭮ ணࠬ஢ (Obfuscated C Contest)
	 ਬ  室. (.	 	17.13).

        : ANSI Rationale . 3.3.2.1 c. 41.

2.10	  㣠,   । 㬥 ᨢ 㭪樨,
	饩 㪠⥫  㪠⥫.

:      ࠢ,  ஬ ᨢ ॢ  㪠⥫  
        ਬ ४ᨢ. ᨢ ᨢ (.. 㬥 ᨢ  )
	ॢ頥  㪠⥫  ᨢ,    㪠⥫ 	㪠⥫.
	⥫  ᨢ    㦤  ਬ 	㦭
         ஦. (⠭   㡫 ⥬,  
        ४ ,   ᨨ pcc  祭
         ᭮ pcc ணࠬ lint,  ୮ ਭ ᢠ
        ஢ 㪠⥫  ᨢ.) ᫨  ।
        㬥 ᨢ 㭪樨:

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

	ᠭ 㭪樨 	ᮮ⢥⢮

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

                 f(int (*ap)[NCOLUMNS]) {...}   /* ap - 㪠⥫  ᨢ */

         砥,  ᯮ ࢮ ᠭ,  
        ⢫ 筮 ८ࠧ  "ᨢ ᨢ"  "㪠⥫
         ᨢ";  ஬ 砥 㪠⥫  ᨢ  .
          뢠 㭪  뤥   ᨢ, 
        室    ࠧ, ⠪  ⢮ "ப" NROWS
          饭.  "ଠ" ᨢ -० , ⠪ 
        ࠧ "⮫" NCOLUMNS   祭 (  ᨢ
        ࠧ୮ 3  ,  ஬ ࠧ).

	᫨ ଠ	ࠬ 㭪樨 ᠭ	 㪠⥫  㪠⥫,
         । 㭪樨  ⢥ ࠬ 㬥୮ ᨢ 㤥,
        , ४⭮.

        : K&R I .5.10 c. 110; K&R II .5.9 c. 113.

2.11:     㭪樨, ਭ騥  ⢥ ࠬ 㬥
        ᨢ, "ਭ"   ६ 樨 ⭠?

:	 .   ⥩ - । 㪠⥫   [0][0]
	  ࠧࠬ  ⥬ ᨬ㫨஢	 "":

		f2(aryp, nrows, ncolumns)
		int *aryp;
		int nrows, ncolumns;
                { ... array[i][j]  aryp[i * ncolumns + j] ... }

        ⮩ 㭪樨 ᨢ   2.10   । ⠪:

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

	㦭, , ,  ணࠬ,	믮 ஢
	୮ ᨢ ""   ᮮ⢥ ⠭
        ANSI C;  (&array[0][0])[x]  ।  x> NCOLUMNS.

	gcc ࠧ蠥 	 ᨢ,   ࠧ,
	 㬥⠬ 㭪樨,	  - ⠭⭮ ७.
	. ⠪  2.15.

2.12:     㪠⥫  ᨢ?

:	筮 ⮣   㦭.  砩  	㪠⥫ 
	ᨢ,	筮    㪠⥫  		ᨢ.

         㪠⥫  ᨢ ᬮਬ ᯮ짮 㪠⥫  
         ⮢ ᨢ.  ᨢ ⨯ T ॢ  㪠⥫ ⨯ 
        (.  2.3),  㤮;   㢥祭 㪠⥫
            ⤥ ⠬ ᨢ. ⨭
        㪠⥫  ᨢ  㢥祭  樨 㪠뢠 
        ᫥騩 ᨢ   饬 砥 ᫨  ,   
          ᨢ ᨢ. (C.  2.10 .)

        ᫨ ⢨⥫쭮 㦭  㪠⥫  楫 ᨢ,
	ᯮ - த  "int (*ap)[N];"  N	- ࠧ ᨢ.
	(C. ⠪  10.4.)  ᫨ ࠧ ᨢ ⥭, ࠬ
	N 	 饭, 	稢訩  १ ⨯ "	㪠⥫
         ᨢ ⭮ ࠧ" - ᯮ.

2.13    室  ⮣,  뫪  ᨢ ॢ  㪠⥫,
        ᪠  祬 ࠧ  ᨢ

		int array[NROWS][NCOLUMNS];

         array  &array?

O:      ᭮ ANSI/ISO ⠭ C, &array  㪠⥫ ⨯
        "㪠⥫--ᨢ-",   ᨢ (C. ⠪  2.12).
         몥 C  室 ⠭ ANSI  &  &array ஢,
        ஦ ।० .   C, 
          ᨢ, ஦ 㪠⥫ ⨯ 㪠⥫--, .. 
          ᨢ. (C. ⠪  2.3.)

2.14:    ᪨ 뤥   ୮ ᨢ?

:       ᥣ 뤥   ᨢ 㪠⥫,  ⥬
        樠஢  㪠⥫ ⠪, ⮡  㪠뢠 
        ᪨ ᮧ ப.  ਬ  㬥୮ ᨢ:

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

	( "ॠ쭮" ணࠬ, malloc	  ࠢ쭮 , 
	 頥 malloc 祭 - ஢७.)

         ন ⭮ ᨢ, (६ 㤭
        ᫥騩 ७  㣮   ⤥ ப),  
          䬥᪨ ⢨  㪠⥫ﬨ:

                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;

          砥    ⠬ ᪨  ᨢ
	  ந 		筮	樨: array[i][j].

	᫨  ᢥ ,   ਢ 
        ਬ,   - 稭  ࠨ,  ஢
        㬥 ᨢ   ᪨  ୮
        ᨢ:

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

	,	,	樨 ஢	㦭 믮	,
	⢫    i,j   array3[i*ncolumns+j].
	( ᫥    ,  맮 
	ॡ	㣫	᪮  ,   룫 	筮
	⠪,   ୮ ᨢ.)

	,  ᯮ짮 㪠⥫  ᨢ:

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

         ᨭ⠪ ⠭ 騬,  "ᥣ "  ७
          ⭮  ६ 樨.

         ᠭ묨 ਥ, 室 ᢮ ,
         ᨢ (  室  ᪮쪮 蠣; .
         3.9),     㦭,   ᫥ ᬥ訢
        ᪨ ᮧ ᨢ  묨, ᪨ (c. 
        2.15 ,  ⠪  2.10).

2.15	 	ࠢࠢ ᯮ짮 ᪨  ᪨ 
	 ᨢ 	।   ⢥ ࠬ஢ 㭪?

:	쭮 襭  . 쬥 

		 int array[NROWS][NCOLUMNS];
		 int **array1;
		 int **array2;
		 int *array3;
		 int (*array4)[NCOLUMNS];

	ᮮ⢥騥	ᯮᮡ 뤥    2.10  2.14,
	 㭪樨,  

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

	(.  2.10  2.11).  ᫥騥 맮  ࠡ
	⠪,  

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

	騥  맮, ,	 ࠡ,	  
        ᮬ⥫ ਢ ⨯,  ࠡ   ⮬ 砥, 
        ᪨  ᫮ ⮫殢 ncolumns ᮢ  NCOLUMS:

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

	室  ࠧ ⬥,  । &array[0][0] 㭪樨 f2
	 ᮢᥬ ᮮ⢥	⠭; .  2.11.

        ᫨  ᯮᮡ , 祬  襯᫥ 맮
        ࠡ  ᠭ  ⠪,   ,  ᫨  ,
        祬 ⠭,  訥  ᯨ᮪, ࠡ  ,   
        _祭_ 襥  ᨢ  㪠⥫ ( ᪮쪨 㣨
        ⥩) C.

2.16	  : ᫨  

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

	 ⥯ 	ᬠਢ "array"  ᨢ,  ண 
	ࢮ	 ࠢ .

:        ਥ 譥 ਢ⥫ ( ᯮ짮  
          "Numerical Recipes in "),   㤮⢮
        ⠭⠬ . 䬥᪨ ⢨  㪠⥫ﬨ । 
        ⮣,  㪠⥫ 뫠  뤥    
        ࠦ 騩 , ᫥騩 ࠧ  . 
        ⨢ 砥  ணࠬ  ।, _ ᫨
        㪠⥫  ७砥_. , ਢ ,  ⥬,
          㬥襭 ᬥ饭   祭  
        (, - 横᪮ 室   祭
        ࠭ ᥣ).

        : ANSI .3.3.6 c. 48, Rationale .3.2.2.3 c. 38;
        K&R II  .5.3 c. 100, .5.4 c. 102-3, .A7.7 c. 205-6.

2.17:	 । 㭪樨 㪠⥫,   樠

		...
		int *ip;
		f(ip);
		...

		void f(ip)
		int *ip;
		{
			static int dummy = 5;
			ip =	&dummy;
		}

	 㪠⥫ ᫥ 맮 㭪樨 ⠥ .

:	㭪	⠥  ᠬ 㪠⥫,  ,  	 뫠?
	,  㬥   ।  祭. 뢠 㭪
	 ⮫쪮	 । 㪠⥫.  㦭  ।
	 㪠⥫	(㭪 㤥  ⮬ 砥 ਭ 㪠⥫
	 㪠⥫),  ᤥ ⠪, ⮡ 㭪 頫 㪠⥫.

2.18	  । 㪠⥫  char,  㪠뢠    int,
	祬  室 室  ᫥饬  ⨯ int.
	祬

                ((int *)p)++;

	 ࠡ⠥?

:       몥   ८ࠧ ⨯  砥 "㤥 ⢮
	⠪,    	 㣮 ⨯";  , 
        ⢨⥫쭮 믮 ८ࠧ, 祬  ।
        砥 祭 ⨯ rvalue, ஬  ᢮ 
        祭   ஬  ਬ  ++. ( 
         ,   pcc   ७ gcc 
        ਭ ࠦ ਢ  ⨯.).
         ,  㬠:

		p = (char *)((int *)p	+ 1);

	 

		p += sizeof(int);

        : ANSI .3.3.4, Rationale .3.3.2.4 c. 43.

2.19	  ᯮ짮 void ** , ⮡ । 㭪樨 	뫪
	饭 㪠⥫?

:      ⠭⭮ 襭  , ᪮    饣 ⨯
        㪠⥫--㪠⥫.  void * 㯠  ஫ 饭
        㪠⥫ ⮫쪮 ⮬,  ⮬᪨ ⢫
        ८ࠧ     ஭,   ࠧ ⨯
        㪠⥫.  ८ࠧ    믮 (⨭
        ⨯ 㪠⥫ ⥭), ᫨ ⢫ ⪠ ᢥ
        樨,  void ** 㪠뢠  - ⫨筮  void *.


	3. 뤥 


3.1:	祬  ࠡ⠥ ࠣ ?

		char *answer;
		printf("Type something:\n");
		gets(answer);
		printf("You typed \"%s\"\n", answer);

:	⥫ "answer",  । 㭪樨 gets 	, 
	஬	 ࠭  ᨬ,  樠஢, ..
         㪠뢠  - 뤥 . 묨 ᫮, 
        ᪠,   㪠뢠 "answer". (   ६ 
        樠,  砫 筮 ᮤঠ "",   
         ࠭,   砫 "answer" -  㫥 㪠⥫.
        .  17.1).

	⥩訩 ᯮᮡ ࠢ ணࠬ -	ᯮ짮  ᨢ
	 㪠⥫, ।⠢    뤥 :

		#include <string.h>

		char answer[100], *p;
		printf("Type something:\n");
                fgets(answer, sizeof(answer), stdin);
                if((p = strchr(answer, '\n')) != NULL)
			*p =	'\0';
		printf("You typed \"%s\"\n", answer);

	,  	 ⮬ ਬ  ᯮ fgets()  gets()
	( ਧ 襣 ⮭, .	 11.6),   㪠
	ࠧ ᨢ,	⠪ 	室  । ᨢ, 	짮⥫
         ᫨誮  ப, ⠭ . ( ᮦ,
        fgets()  㤠 ⮬᪨ 騩 ᨬ  ப \n,
           gets()).   뤥   ⠪
        ᯮ짮 malloc().

3.2:	 	⠢ ࠡ strcat.   ணࠬ

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

	 १ 쬠 ࠭.

:	஡ ᭮ ⮨  ⮬,   뤥  	१
	ꥤ.   ন ⮬᪨ ६	⨯ string.
          뤥  ⮫쪮  ꥪ,  㪠
	 室 ⥪ ( 砥 ਭ    ᨢ  
	ᨬ, 祭   窨). ணࠬ  ᠬ
          ⮬, ⮡ 뫠 뤥   १,
         砥   믮 ணࠬ, ਬ
        १ ꥤ ப. 筮  ⨣ 
        ᨢ  맮 malloc. (. ⠪  17.20).

	㭪	strcat  뤥 ;  ப ᮥ	
	ࢮ.	⥫쭮,   ࠢ -   ࢮ ப
	  ᨢ 筮 

		char s1[20] =	"Hello,	";

	 	strcat 頥 㪠⥫   ப (	襬 砥
	s1), ६	s3 - .

        : CT&P . 3.2 c. 32.

3.3       ࠢ筨  㭪樨  strcat ᪠,    ᯮ 
        ⢥ 㬥⮢  㪠⥫  char. 㤠   
        뤥 ?

  :	 ࠢ,  ᯮ짮 㪠⥫ _ᥣ_  室
           뤥 ,  ࠩ ,  㢥७,
             . ᫨  㬥樨 
         㭪  祣  ᪠  뤥 ,
	 筮  ஡ 뢠饩 㭪樨.

	⪮	ᠭ 㭪樨  孥   ࠭ ࠢ筨 
        ⨫ UNIX    㦤. ਢ ⠬ ࠣ
           ।, 室  ࠧࠡ稪 㭪樨,
        祬  ⮣,  㤥  㭪 뢠.  ⭮, 
	㭪樨, 騥  ⢥ ࠬ஢ 㪠⥫ (  
	ਭ, ਬ), 筮 뢠 	ࠬࠬ, ࠢ묨 ᠬ
        - 㦥  ꥪ⮢(   ᨢ - .
         2.3, 2.4.) 㣮 ࠭ ਬ - 㭪 stat().

3.4	।,	 㭪,   ᯮ, 頥 ப,
	 ᫥   뢠 㭪  ப ᮤন "".

:      ,  ࠢ쭮 뤥  , 㪠⥫ 
         頥  㭪. 㭪   㪠⥫
         ᪨ 뤥     , ।
        㭪樨   ⢥ ࠬ,   , 뤥   
        malloc(),  __   (auto) ᨢ.  㣨  ᫮,
            祣 宦 

		char *f()
		{
			char	buf[10];
			/* ... */
			return buf;
		}

        ਢ  ࠢ (ਣ  砥,  f() 뢠
        ४ᨢ,   ६ 㦭 ᪮쪮 頥
        祭)

                static char buf[10];

	.  ⠪  17.5.

3.5	祬   室 ⥪ 祭, 頥  malloc(),
	⭮ ८ࠧ	 㪠⥫  뤥塞 ⨯ ?

:	 ⮣	 ⠭ ANSI/ISO  饭 ⨯ 㪠⥫ void *,
         ८ࠧ 뫨 筮 室  
        ।०   ࠢ 㪠⥫ ࠧ ⨯.
        (᭮ ⠭ C ANSI/ISO, ⠪ ८ࠧ ⨯
        㪠⥫  ॡ).

3.6	 ᯮ짮 ᮤন ᪨ 뤥塞  ᫥
	⮣   ᢮?

:      .    ᠭ malloc()  ਫ,  ᮤন
        ᢮  "⠥ "; ⠪ த ᯥ譠
        ࠭   뫠 㭨ᠫ쭮   ॡ ⠭⮬ ANSI.

         ணࠬ ⠫  筮 ᯮ짮 ᮤন
        ᢮ ,    ᤥ ﭭ. ᬮ
        ᫥騩 (४) ࠣ ணࠬ,  ஬ ᢮
        ,  吝 ᯨ᪮:

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

         㬠,  , ᫨ 㤥 ᯮ짮   
         祢 ࠦ  ⥫ 横 listp = listp->next, 
        ६ 㪠⥫ nextp.

        .: ANSI Rationale . 4.10.3.2 c. 102; CT&P . 7.10 c. 95.

3.7     㤠 free() , ᪮쪮  ᢮?

:      㭪樨  malloc/free  ࠧ  뤥塞 
        頥 , ⠪   㦭  ࠧ
        ᢮ .

3.8        㧭 ⢨⥫ ࠧ 뤥塞 ?

:	 㭨ᠫ쭮 ⢥.

3.9      뤥   ,  ᮤঠ 㪠⥫ 
        㣨 ᪨ ᮧ ꥪ.   ᢮ ,
		ன,   	᭠砫	᢮ , 
	稭 ꥪ⮬?

:      .  饬, 室 ᤥ ⠪, ⮡  㪠⥫,
        頥  malloc()  । free() 筮  ࠧ (᫨ 
        ᢮).

3.10	  ணࠬ ᭠砫   malloc()  뤥	,	
	⥬ 讥 ⢮ 	᢮ 		free(),	
        ⢮ ⮩  (⠪ ᮮ頥  樮 ⥬)
         㬥蠥.

:	設⢮ ॠ権 malloc/free  	 ᢮
         樮 ⥬ (᫨ ⠪ ),  
         ᢮  㯭   맮 malloc() 
        ࠬ ⮣  .

3.11       ᢮ 뤥  । ⮬ 
        樭 ⥬?

:         易⥫쭮.  樮 ⥬
        ⠭ ﭨ   砭 ࠡ ணࠬ.
          ,   ᮭ  ⭮,  
	  ⠭ ,   ⠭  ANSI/ISO
           㪠,    ⭮  "
        ॠ樨".

        . ANSI . 4.10.3.2 .

3.12	ࠢ쭮  ᯮ짮 㫥 㪠⥫  ⢥ ࢮ
	㬥 㭪樨 realloc()? 祬  㦭?

:       ࠧ襭 ⠭⮬ ANSI C ( ⠪ ᯮ짮
        realloc(...,0)  ᢮ ),   ࠭
        ॠ樨    ন,  쭮  ⮬ 砥 
        ࠭.  । 㫥 㪠⥫ realloc()  
        ᠭ ᠬ饣 ⬠ 蠣 뤥 .

        .  ANSI . 4.10.3.4 .

3.13:    祬 ࠧ  calloc  malloc?    १
        ਬ calloc ४ 祭 㫥 㪠⥫  ᥫ 
        饩 窮? ᢮  free , 뤥 calloc,
	 㦭 ᯮ짮 cfree?

:	  calloc(m,n)	⭠

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

	 ﬨ 砥 㫥  ⮢, , ᫥⥫쭮,
         ࠭ 㫥 祭  㪠⥫ (. ࠧ 1) 
         ᥫ  饩 窮. 㭪 free  ( )
        ᯮ짮  ᢮ , 뤥 calloc.

         : ANSI   4.10.3  4.10.3.2 .


3.14:    ⠪ alloca  祬 ᯮ짮 ⮩ 㭪樨 ࠦ?

:	alloca 뤥	,		⮬᪨ ᢮, 
        ந室   㭪樨,  ன 뢠 alloca.  ,
        , 뤥 alloca, 쭠  ⭮襭  "⥪ "
         ⥪  㭪樨.

        ᯮ짮  alloca     , ॠ樨 ⮩
	㭪樨	㤭  設  ⥪. ᯮ짮 ⮩	㭪樨
	஡筮 ( 祢 ॠ  設  ⥪ 
	㤠), 	頥 	祭 ।⢥ ।
        㣮 㭪樨, , ਬ,  fgets(alloca(100), 100, stdin).

            稭  alloca ( ᨬ  ⮣,
        ᪮쪮    )  ᯮ짮  ணࠬ,
            ᮪ ⥯ .

        . ANSI Rationale . 4.10.3 c. 102.


	4. ࠦ


4.1:	祬  ⠪ 

		a[i] = i++;

	 ࠡ⠥?

:      ࠦ  i++  ਢ  筮 䥪 -  祭  i
	, 	ਢ  ।, ᫨ i 㦥	砥 
	⮬  ࠦ. (  	, 	   K&R
        ,    ࠦ  ᠭ, ⠭
        ANSI/ISO ⢥ত,    । - .  5.23.)

        . ANSI .3.3 c. 39.


4.2:	ய⨢ 

                int i = 7;
		printf("%d\n", i++ * i++);

	१ ᢮ ,	  稫  室 49.  ࠧ, ᨬ
	  浪  ᫥, १    ࠢ	56?

:	    ᯮ짮 䨪᭮    ஢	 ++  	--
        㢥祭  㬥襭 믮 ᫥ ⮣  ࢮ砫쭮
	祭 ᯮ짮, ⠩  ᫮ "᫥" 	
	୮. __ ࠭,   㢥祭  㬥襭 㤥
	믮  ᫥ ᯮ짮 ࢮ砫쭮 祭
	। ⥬  㤥 ᫥  㣠  ࠦ. 
	࠭,   㤥 ந  -	 
	砭 ᫥ (। ᫥饩 "窮 ᫥⥫쭮"
	 ନ ANSI	C).   ਢ ਬ  㬭
	।饥 祭 ᠬ  ᥡ  ⥬ 	㢥稫 i  1.

	 ,	ᮤঠ饣  ᫥ ᫥ 
        䥪  ।  (.  5.23).   ⠩ ᭨,
              ( ⨢ 㬭
        ࠦ     );  K&R  ᪠: "
        ࠭   , ᫨   ,   
         ࠧ 設"

        .: K&R I . 2.12 c. 50; K&R II . 2.12 c. 54; ANSI
        . 3.3 c. 39; CT&P . 3.7 c. 47; PCS . 9.5 c. 120-1.
        ( ਭ   H&S . 7.12 c. 190-1,  ५)


4.3:	 ᯥਬ஢  

                int i = 2;
		i = i++;

	  뤠 i=2,  3,   뤠 4.
         ,   ।,     4?

:      । (undefined)  砥,   
        __  㣮. .  5.23.

4.4      ⢥,   ।,   ஡ ANSI -
          稫 ,  .

:        ,   㤨,  砥
         ।  ( ன ⥯  ⭮  
         ᨬ  ॠ樨  ᠭ ). 
        ⭮,    ,   .  ࠧ㬭,
        ,   . . ⠪  5.18.

4.5:	  ᯮ짮 㣫 ᪮, ⮡ ᯥ 㦭 
	冷	᫥? ᫨ ,  ࠧ ਮ ஢ 
	ᯥ稢 ⮣?

:      㣫 ᪮,   ਮ  ஢ ᯥ稢 
         冷  ᫥ ࠦ. ᬮਬ ࠦ

                 f() + g() * h()   .

         ⭮,  㬭 㤥 믮 ࠭ ᫮, 
        祣 ᪠  ⮬,     㭪権 㤥 맢 ࢮ.

4.6	   ஢ &&,	||,  ⮩ ?	    
	⨯
		 if((c = getchar()) == EOF || c	== '\n')" ...

:	  ஢,     ?:  ᯥ樠쭮
        ᪫祭;    ࠧ㬥 । 冷
        ᫥, .. ࠭ ᫥ ᫥-ࠢ.  
               ᭮ .

        .: K&R I . 2.6 c. 38, . A7.11-12 c. 190-1;
        K&R II . 2.6 c. 41, . A7.14-15 c. 207-8; ANSI
        . 3.3.13 c. 52, 3.3.14 c. 52, 3.3.15 c. 53, 3.3.17 c. 55,
        CT&P . 3.7 c. 46-7.

4.7	᫨   ᯮ 祭 ࠦ,	   	㢥稢
        ६ i: ⠪: ++i  ⠪: i++ ?

:      ਬ ⮩    ᪠뢠 ⮫쪮  祭
        ࠦ,    ,  ॡ ⮫쪮
          䥪.

4.8	祬	ࠢ쭮 ࠡ⠥ 

		 int a = 1000, b = 1000;
		 long int c = a	* b;   ?

:	᭮ 騬 ࠢ	८ࠧ ⨯ 몠 , 㬭
        믮  ᯮ짮 楫᫥ 䬥⨪,  १
         ਢ  ९ / 祭  ⮣  㤥 ᢮
        饩 ᫥ ६ ⨯ long int.  ᯮ  ਢ
        ⨯, ⮡  䬥⨪  楫

		       long int	c = (long int)a	* b;

        ,   (long int)(a * b) __ ਢ  
        १.


	5.  ANSI C


5.1	  ⠪ ⠭ ANSI C ?


:	 1983   ਪ᪨  樮	⠭⮢ (ANSI)
	।		X3J11, ⮡ ࠧࠡ ⠭ 몠	. ᫥
	⥫쭮  㤭 ࠡ, 饩	 ᪮쪨 㡫
	⮢, ࠡ	 訫 14		 1989 .ᮧ
        ⠭ ANS X3.159-1989. ⠭  㡫 ᭮ 1990 .
	 設⢥ 砥 ANSI C 㧠 㦥  ࠪ⨪	
	ᤥ ᪮쪮 ⢮  ++ (	 	- 
	⨯ 㭪権). 뫠 ⠪	 প 樮
        ஢ ᨬ ( 訥 訬 
        姭 ᫥⥫쭮). ⠭ ANSI C ଠ ⠪
	⠭ ⥪.

        㡫 ⠭ 砥 "ਨ" ("Rationale"), 
           襭  㦤  ⮭
        ,  ᪮쪮 ஭ . ("ਨ"
         室  ⠭ ANSI X3.159-1989,  ਢ  ⢥
        ⥫쭮 ଠ樨.)

	⠭ ANSI  ਭ  ⢥ 㭠த ⠭ ISO/IEC
	9899:1990,    㬥 ࠧ  (ࠧ 2 - 4 ⠭
        ANSI ᮮ⢥ ࠧ 5 - 7 ⠭  ISO), ࠧ
        "ਨ"   祭.

5.2	   ⠭?

	ANSI X3.159 	樠쭮  ⠭⮬ ISO 9899.	
	⠭ 	  

		American National Standards Institute
		11 W.	42nd St., 13th floor
		New York, NY	10036  USA
		(+1) 212 642 4900
	
		Global Engineering Documents
		2805 McGaw Avenue
		Irvine, CA  92714  USA
		(+1) 714 261 1455
		(800)	854 7179  (U.S.	& Canada)

         㣨 ࠭ 令   ⮬  ⠭⠬ 
          樮   ⠭⠬  

		  ISO Sales
		  Case Postale 56
		  CH-1211 Geneve 20
		  Switzerland

	 ⠢	 ANSI $130,  Global Engineering Documents - $160.
         ਣ쭮 ⠭ 3.159, 騥 "ਨ",
        ० 㯭  $205.00 (ANSI)   $200.50 (Global
        Engineering Documents). ⬥⨬,   ANSI  প ᢮
        ⥫쭮 砥 室  த ⯥⠭  ⠭,
        ⠪  ஭  _㯭_.

	 ࡥ  	稢  "ਨ  ⠭
        " ᮤন  ᪮쪮 ࠭ ⠭ ISO 9899; 㡫
        ⥫⢮ Osborne/McGraw-Hill, ISBN 0-07-881952-0  த
        ਬ୮  $40. ( ,  ࠧ稥  業  樠
        ⠭⮬  ਥ ࡥ  ᮮ⢥ 業
        ).

         "ਥ" ( ᥣ ⠭) ⥯ 㯥 १
        ftp ftp.uu.net (.  17.12)  ४ਨ doc/standards/ansi/
        X3.159-1989. "ਨ" 뫨 ⠪  ⥫⢮ Silicon
        Press, ISBN 0-929306-07-4.

5.3	 	 - ⨫  ॢ -ணࠬ, ᠭ 
         ஬ ⨫,  ANSI C  ?   ணࠬ 
        ⮬᪮ ᮧ ⨯?

:       ணࠬ, protoize  unprotoize ⢫ ८ࠧ 
         ஭  㭪ﬨ, ᠭ묨   ⨫  ⨯,
         㭪ﬨ, ᠭ묨  ஬ ⨫. ( ணࠬ 
        ন  ॢ  "᪨"  ANSI C).
         ணࠬ 뫨 ᭠砫 ⠢  FSF GNU  ,
        gcc,  ⥯  -  ਡ⨢ gcc; ᬮ ४਩
        pub/gnu  prep.ai.mit.edu (18.71.0.38),   㣨 娢 FSF.

	ணࠬ unproto ((/pub/unix/unproto5.shar.Z  ftp.win.tue.nl	-
         䨫, ᯮ騩  ९஬  ᫥騬
        室  -   ॢ 設⢮ ᮡ⥩
        ANSI C  ࠤ樮 .

	GNU  GhostScript ᮤন  ணࠬ ansi2knr.

	 ᪮쪮 ஢ ⨯,    - 䨪樨
        ணࠬ lint.  3 ணࠬ CPROTO 뫠 饭  ७
        comp.sources.misc   1992 .  㣠 ணࠬ, 
	뢠 "ctxtract". .  17.12.

         祭  : ⠪   㦭 ८ࠧ뢠
        ஬ ⢮  ணࠬ  ANSI C?  ⨫ ᠭ
        㭪権   ⨬.

5.4       ᯮ짮 ANSI- பࠧ騩  #, ⮡
        ⠢  ᮮ饭 祭 ᨬ᪮ ⠭,  ⠢
        ଠ ࠬ ,    祭.

:	室 ᯮ짮	蠣 楤  ⮣ ⮡ 
	뢠 	 பࠧ

		#define str(x) #x
		#define xstr(x) str(x)
		#define OP plus
		char *opname = xstr(OP);

	 楤	⠭ opname ࠢ "plus",   "OP".
	  室  室  ᯮ짮 
        ᪫ ᥬ ##,  㦭 ᮥ 祭 (  
        ଠ ࠬ஢)  ᮢ.

        : ANSI . 3.8.3.2, . 3.8.3.5 ਬ c. 93.

5.5	 , 祬  ᯮ짮 塞 祭 
        樠樨 ६   ࠧ஢ ᨢ,   ᫥饬
        ਬ:

		 const int n = 5;
		 int a[n];

:      䨪 const 砥 "⮫쪮  ⥭".  ꥪ
        ஢  const, ।⠢ ᮡ ଠ ꥪ,
        騩  ६ ᯮ ணࠬ, ஬  ᢮ 㣮
        祭. ⥫쭮, 祭 ⠪ ꥪ -  __
        ⠭⭮ ࠦ   ᫥ ⮣ ᫮. ( ⮬ ᫥ 
         宦  ++). ᫨  室  ⨭ ⠭,
        ࠡ  ६ 樨, ᯮ ९ ४⨢
        #define.

        : ANSI . 3.4.

5.6	 ࠧ  "char const	*p"  "char * const p"?

:      "char const *p" -  㪠⥫  ﭭ  ( 
        ); "char * const p" -  塞 㪠⥫ 
        ६ (   ) ⨯ char.  㡨  ᥡ  .
        . ⠪ 10.4.

        : ANSI . 3.5.4.1 .

5.7	祬  । char **	㭪樨, 饩 const char **?

:	 ᯮ짮 㪠⥫-- 	⨯ ,  
	㪠⥫--const-,  ࠢ (筮	। ᪫祭	
        ), ࠧ饥 ⥫ ⫨  _㪠⥫_,  
	ਬ ४ᨢ,	 ⮫쪮  ᠬ 孥 ஢.

	室 ᯮ짮	筮 ਢ ⨯	(.. 	 砥
        (const char **))  ᢮  । 㪠⥫, 
         ࠧ  ஢ ᢥ 樨, ⫨筮  ࢮ.

        : ANSI . 3.1.2.6 c. 26, . 3.3.16.1 c. 54,
        . 3.5.3 c. 65.

5.8	 ANSI  ⬥砥 ᮢ,  砥 
	ﬨ

	       extern int func(float);

		int func(x)
		float	x;
		{...

:	 ᬥ蠫  	 ⨫ "extern int	func(float);"
	 । 㭪樨  ஬	⨫ "int func(x) float x;".
        襭 ⨫,  ࠢ, ᭮ (.  5.9), 
	⮫쪮   ⮬ 砥. 	 (  ANSI   ⢨
	⨯   ᯨ᪠ 㬥⮢ ६ ) ""
	㬥 । ⨯  ।  㭪. 㬥
	⨯ float ८ࠧ  ⨯ double,  	⪨ 楫
	८ࠧ 	⨯ int. ( ᫨	㭪	।  ஬ ⨫,
	ࠬ ⮬᪨	८ࠧ 	⥫ 㭪樨   ,
	᫨ ⠪  ᠭ	⠬.).

	 㤭	  ८    ।
	 	⨫,

		int func(float x) { ... }

	    ⨯   ⨫ ⠪ ࠧ,	⮡
	 ᮮ⢥⢮ । 	஬ ⨫:

		extern int func(double);

	( ⮬	砥  襩 ᭮ 뫮	 ⥫쭮  
        ।  ஬ ⨫ ⠪, ⮡ ࠬ, ᫨ ⮫쪮 
        ᯮ  ,  ⨯ double ).

        , 㤥 ᭥  ⨯ char, short int, float 
        頥 祭  㬥⮢ 㭪権.

        : ANSI . 3.3.2.2 .

5.9	  ᬥ訢 । 㭪権  ஬	 	⨫?

:	襭 ⨫	᮫⭮ , ᫨	ᮡ ஦
	( ᮡ    5.8). , , 
        । 㭪権  ஬ ⨫ ⠥ 室騬 
        㯮ॡ,    ४  প ண ⨫
          ४饭.

5.10	祬 

		 extern	f(struct x {int	s;} *p);

	஦ ⭮ ।०   "struct x introduced in
	prototype scope"?  ( 	   ⨯)?

:	 ࠭ ⨢稨	 묨 ࠢ  ⥩ 
        ,  ⮫쪮  ⨯,    ᮢ⨬ 
        㣨 ࠬ, 묨  ⮬  䠩.  ⮣,
        ४  ⥣     ᯮ짮 ᫥
        ⠪  (  ꢫ ࠥ  
        ⨯).   襭 ஡ 室, ⮡ ⨯
        ।⢮ "⮥" 

		struct x;

        , ஥ १ࢨ     䠩 
        ।  x. । 㤥 襭 
          ⨯.

        : ANSI . 3.1.2.1 c. 21,. 3.1.2.6 c. 26,
                . 3.5.2.3 c. 63.

5.11       ࠭ ᮮ饭  訡  ,
        "몫祭"   #ifdef.

:	᭮ ANSI C, ⥪,	"몫祭" 		#if, #ifdef, 
	#ifndef	 	 "४  ९஢".
         ,      ਥ 
        祪 ( ᮡ ,    ᮪饭
        ᠭ ᫮ ᬮ  砫 ୮ ⠭).
         祪    ᨬ  ப. ⥫쭮,
        ਨ  ᥢ ᥣ  室 
        ।⢥ ।祭묨  ⮣ ᨬ 砫  
         /*  */.  (, ,  17.14  6.7).

          : ANSI . 2.1.1.2 c. 6, . 3.1 c. 19 ப 37.


5.12	  	main  void, ⮡ ४⨫ ࠧࠦ騥
	ᮮ饭 "main	return no value"? ( 뢠 exit(), ⠪ 
	main 祣  頥).

:	. main   	  int  ᯮ
          ,    㬥 (室饣 ⨯). ᫨
        ᯮ exit(),  ।०騥 ᮮ饭  祧,
	 㦭 㤥	⠢ 譨	return,	 ᯮ짮, ᫨
	 , ४⨢	த "notreached".

	 㭪樨  void    	।०
        ; ஬ ⮣,   த  ᫥⥫쭮
        맮/, ᮢ⨬  ⥬,   뢠 㭪
        ( 砥 main  ᯮ ⥬ 몠 ).

          : ANSI . 2.1.2.2.1 c. 7-8.

5.13:	 筮  ⥭     exit(status)
	   return?

:      ଠ쭮, ,  ᮮ⢥ᢨ    
        ⠭ ⥬,   ,  , 
	 main(),  ॡ	  襭 믮
	(  	맮	setbuf()  atexit()),	 	४ᨢ
	맮 main().

          : ANSI . 2.1.2.2.3 c. 8.

5.14    祬 ⠭ ANSI ࠭ ⮫쪮  稬 ᨬ (
        ⢨ ࠧ  ய묨  묨 ᨬ) 
        譨 䨪஢?

:	஡   騪,      ⠭
	ANSI,   ࠧࠡ稪 ஢.	࠭祭 ⮨  ⮬,
	 ⮫쪮  	ᨬ _稬_,    ⮬,	 
        䨪 ࠭祭  ᨬ.  ࠭祭
        ࠧࠦ,     뭮ᨬ.  ⠭ 
        祭  "室饥  㯮ॡ", ⠪   ᫥
        । , ⭮, 㤥 ᫠.

         㯪 ᮢ६ 騪, ࠭稢騬 ⢮
	稬 ᨬ, 易⥫쭮 㦭 , 		
            ணࠬ⮢. ( ""
        ᪠,  ࠭ ⮣ ࠭祭 뫮 " ".
        ᫨   ᮣ     -  ⠢
        , ६ ࠭稢騬 ⢮ 稬 ᨬ
        騪,  襥 ⢮  ᨬ, ⠩
        ॢ室 ᠭ ࠧ 3.1.2 X3.159 "ਥ" (. 
        5.1),  㦤 ᪮쪮 ⠪ த 室  ,
        祬  室    㧠.

          : ANSI . 3.1.2 c. 21, . 3.9.1 c. 96, Rationale
          . 3.1.2 c. 19-21.

5.15	 ࠧ  memcpy  memmove?

:      memmove ࠭ ࠢ쭮 樨 ஢, ᫨ 
          ४뢠. memcpy   ⠪ ࠭⨨ ,
        ᫥⥫쭮,    䥪⨢ ॠ.  砥
        ᮬ  ਬ memmove.

          : ANSI . 4.11.2.1, 4.11.2.2, Rationale .4.11.2 .

5.16       ࠭᫨ ⥩訥 ⮢ ணࠬ, 뤠
	ᥢ ᮮ饭  訡.

:	,	  ࠧࠡ⠭  ਥ ⠭ ANSI 
        ⮬  ᯮᮡ ࠡ뢠 ⨯ 㭪権  ⮬ .
        . ⠪  5.17  17.2.

5.17    祬  ।  ணࠬ  ⠭⭮ ANSI-
        ⥪,    ANSI ᮢ⨬ ?

:	 祣 筮 	⮬,  , ਭ騩 ANSI
        ᨭ⠪,   ANSI-ᮢ⨬  䠩  ⠭
	⥪. . ⠪  5.16  17.2.


5.18	祬  "Frobozz Magic C",  ஬ ,  
	ANSI-ᮢ⨬,  ࠭᫨  ணࠬ?	 ,	 ⥪
	稭 ⠭ ANSI, ⮬   ࠭᫨	஬
	gcc.

:      ࠪ᪨   ( gcc -  㣨) ন
         ⠭ ७. ७  ,  ⢥࣭
        ⥪  ਬ   ⠪ ७? ᭮ ᯥਬ஢
         ஬  ᫥ 몠. ⠭  ᪠
        ⪫,   - ࠡ ୮.  . ⠪  4.4.

5.19	祬   㤠 䬥᪨ 樨 	㪠⥫ ⨯
	void * ?

:      ⮬    ⥭ ࠧ ꥪ,  
        㪠뢠 void *. । 䬥᪨ ﬨ ᯮ
         ਢ  ⨯ (char *)   ⮬ ⨯,  
        ᮡࠥ ࠡ.  (, ,  2.18).

5.20	ࠢ쭠   a[3]="abc"?	 	?

:	  ୠ  ANSI	C (, ,	   ࠭
        ),   ⠪  ᮬ⥫쭠. 
        ᨢ ࠧ , 樠㥬 ६ 㪢 'a','b', 'c' 
        饣 ਭ ᨬ '\0'; ᨢ, ᫥⥫쭮,  
        ᯮ짮  ਭ 㭪ﬨ strcpy, printf %s  ..

          : ANSI . 3.5.7 c. 72-3.

5.21	 ⠪ #pragma  	  ਣ?

:	४⨢ #pragma ᯥ稢 ᮡ, 筮 । ""
         믮   ॠ樨 ⢨: ஫ 
        ⨭, 㯠 ,  ।० ᮮ饭
        (த ਥ /* NOTREACHED */  ன ணࠬ lint)  ..

          : ANSI . 3.8.6 .

5.22     砥 "#pragma once"?  襫  ४⨢   
         䠩.

:	 ७,	ॠ 	 ९, 
	 䠩 ⥭, .. 䥪  ⭮ 祭
        䠩 ࠢ 䥪  ⭮ 祭.  ४⨢
        ਢ  ⮬  १,   ਥ  ᯮ짮 #ifndef,
        ᠭ   6.4.

5.23    த   ࠧ稥  ᨬ  ॠ樨,
        ᠭ(unspecified)  । (undefined) .
         祬  ࠧ?

:	᫨  ⪮,   ᨬ  ॠ樨 
        室   ਠ  㬥஢ . 
        ᠭ  ⠪ 롨ࠥ   ਠ⮢,   ⮬
        砥  室  㬥஢. ।
         砥,   ந   㣮.    
	 砥 ⠭  뤢 ॡ;  	 
	⠭ 	। (   ॡ) 롮  ᪮쪨
		ਠ⮢ .
        ᫨  ᮢ  ᠭ  ணࠬ, 
        ஢ ࠧ  ⨬ ६ ﬨ, ᪮  
        室 㤥 .

          : ANSI .1.6, ᮡ  "Rationale".



	6. ९	.

6.1            祭?

:	 	  襣 ⢥. 	 楫 祭 
	 ᯮ짮 	   ᯮ짮	᪫饣
	, 	  ࠡ⠥  ᥫ  饩 窮  㪠⥫.
           ਥ   砥,   ᫠ -  ᠬ 
            ᫮. -   䥪⮢ (.  4.1 
        4.2)    "祢" 㯥મ⭮ 襭  楫 ᥫ
        a^=b^=a^=b.   ।祭  ६ ந쭮
        ⨯ (筮 ⠪  뢠),  ᯮ짮 ६ ६,
	᪮  ⥭  ⨯, 	⠭    
	typeof.

        ᫨    । ⨯ ६ 쨬 ࠬ஢, ,
        ,  , 㭨ᠫ 襭 㤥 ⪠ 
        ᯮ짮 .

6.2         ணࠬ,  ⠥ ஢
        䨪   

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

             ࠡ⠥.

:	, 	਩  祧,	, ᫥⥫쭮, 	
	ᯮ짮 	᪫ ᥤ ᥬ ( ⭮,  ᮧ
         䨪஢), 뫮 㬥஢ ᮡ
         ࠭ ॠ権 ९, ।  ⭠
        뫠 ॠ  (Reiser). ⠭ ANSI,   K&R,
        ⢥ত,  ਨ  묨 ஡. 
        ᪮ 室 ᪫ ᥬ ⠫ 祢, ⠭
        ANSI   ⮣ ᯥ樠  ##,   
        ᯮ짮 ⠪:

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

	 ⠪  5.4.

          : ANSI . 3.8.3.3 c. 91, Rationale c. 66-7.

6.3	 訬 ࠧ  cpp ,  ஬  ᪮쪮
	権?

:	筮 楫 ⮨  ⮬, ⮡  ,   ⫨砫
            㭪樨.  ,   窠  ⮩
        ⠢ ⥬,  뢠 ,   ᠬ ⥫   .
              ⠢ 樥, 祭
         䨣 ᪮, ᪮  ᮮ饭  訡
        (祢, - 譥 窨  ⮩, 饩 ᫥ 樨) 
        ⮬ 砥,   뢠 ᫥ if,   樨 if/else
         else-.

	筮  ஡ 蠥   ⠪ ।:

		  #define Func() do { \
			  /* 	*/ \
			  -1; \
			  -2; \
			  /* ... */ \
			  } while(0)	  /* ( 饩 ;	) */


          맮   窠  ⮩,  ७
        ⠭ ⮩ 樥  ᨬ  ⥪.
        (⨬騩  㤠 譨 ஢ન 
        室  ᫮ 0,  lint     ਭ.)

	᫨ ॡ ,  ஬  権	 ⢫, 
	 樨 -  ࠦ,  	㣮 室, 
		, 祭  㣫 ᪮ ࠦ, ᯮ饥
	  ᪮쪮 . (. ਬ	  6.10.	 室
	 ⠪	ॠ "" 祭).

          : CT&P .6.3 c. 82-3.

6.4	    䠩   #include  㣮
	 䠩?

:        ⨫,    訥 ᯮ.  ,
         "   #include 䠩" ᫥ :
         Indian Hill Style Guide (.  14.3) ⥫쭮
        뢠  ⠪ ⨫; ⠭ 㤭  ᮮ⢥饥
        ।;  #include  ਢ  ᮮ饭 
        ⭮ , ᫨  䠩 祭 ; ⠪
        㤭 ४஢ ࠢ饣 䠩  ⨫ Make.  
        㣮 ஭, ⠭  ᯮ짮  ਭ樯
         ᮧ  䠩 ( 䠩 砥  
        #include ,  室 ⮫쪮 ;  ⨢ 砥 ਤ
         ࠧ ᯮ짮 ⥫ #include,  ᯮᮡ 맢
        ﭭ  );   ⨫,  grep ( 䠩
        tags)    㦭 ।  ᨬ  ⮣,
          室, ,  ਥ:

		  #ifndef HEADERUSED
		  #define HEADERUSED
		  ...ᮤন	 䠩...
		  #endif

          䠩  "⥭",   ⠪ 䠩 
          ᪮쪮 ࠧ; ।⢠ ⮬᪮
        প 䠩  ⨫ Make (   ࠢ  
         砥  ஥⮢)  㦨 ᨬ  稨
         #include. . ⠪ ࠧ 14.

6.5	⠥   sizeof 	ᯮ짮 ।⢠ ९
	#if?

:	. ९ ࠡ⠥  ࠭ ⠤ 樨,	 ⮣	
        ⠭  ⨯ ६. ஡ ᯮ짮
        ⠭, ।  䠩 <limits.h>, ।ᬮ७ ANSI,
         "᪮䨣஢"  ⮣  䠩. (  
         ணࠬ,   ᠬ ᢮ த ⢨⥫쭠 
        ࠧࠬ ६).

          : ANSI . 2.1.1.2 c. 6-7, . 3.8.1 c. 87
	  ਬ砭 83.

6.6	     #if	㧭,	 ࣠ 	設 -
         ਭ樯: 訩 -訩   ?

:      , ⮣ ᤥ . (९ ᯮ 
        ७ 㦤 ⮫쪮  楫      樨).
         㢥७  ,  㦭 筮  ⨯ ࣠樨 ?
           ணࠬ,   ⮣  .

6.7	 ६ 樨 	室 ᫮ ९஢,	 
	   ਤ㬠,   ᤥ   cpp.

:      cpp  㬠  㭨ᠫ ९.  ⠢ cpp
         -   ᢮⢥, 㬠  ᠭ 讣
        ᯥ樠஢ ९.  ࠧ ⨫ ⨯
        make(1),  ⮬⨧  .

        ᫨  ⠥ ९஢ - ⫨筮  ,
        ᯮ 㭨ᠫ ९஬, (⠪  m4).


6.8       ணࠬ,  ன,   , ᫨誮 
        ४⨢ ९ #ifdef.  ࠡ ⥪, ⮡ ⠢
	⮫쪮  ਠ ᫮ 樨,  ᯮ짮 cpp,
	 ⠪	   ४⨢ #include  #define?

:	 ࠭ ணࠬ unifdef, rmifdef  scpp, 
	  筮 ,   㦭. (.  17.12).

6.9	  ᯨ᮪ ।। 䨪஢?

:      ⠭⭮ ᯮᮡ  ,  室 
        . ᫨ 㪮⢮    ᮤন  ᢥ, ,
        , ᠬ ࠧ㬭  - 뤥 ⥪⮢ ப 
        ᯮ 䠩   ९   ⨫
        ⨯ strings(1) ⥬ Unix.   ,   騥 
        ⥬ ।। 䨪 (ਬ, "unix")
        ⠭ (᪮ 䫨   짮⥫)  ⮬
        ⠪ 䨪 㤠  .

6.10	  cpp 	 ६ ⢮ 㬥⮢?

:      ୠ ⠪ 㫮: ।    㬥⮬, 
        뢠    뢠騬   뢠騬 㣫묨
        ᪮:

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

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

        祢 ⮪ ⠪ 室  ⮬,  㦭  
        ⥫ 㣫 ᪮.  㣨 襭 -  ᯮ짮
        ࠧ  (DEBUG1, DEBUG2,  ..)  ᨬ 
        ⢠ 㬥⮢,  㫨஢ 묨:

               #define DEBUG(args) (printf("DEBUG: "), printf(args))
               #define _ ,
               DEBUG("i = %d" _ i)

         ।⥫쭥 ᯮ짮  㭪, 
        ⠭ ᯮᮡ  ᯮ짮 ६ ᫮ 㬥⮢.
	.  7.1	 7.2.


	7. ᪨ 㬥⮢ ६	.

7.1	 ॠ	㭪	 ६ ᫮ 㬥⮢?

:	ᯮ  䠩 <stdarg.h> (, ᫨	室, 
	 <varargs.h>).

	 ਬ 㭪樨,  ꥤ ந쭮 ⢮
	ਭ,  १  뤥   malloc ⮪
	.

                 #include <stdlib.h>           /*  malloc, NULL, size_t */
                 #include <stdarg.h>           /*  va_ ᮢ */
                 #include <string.h>           /*  strcat  .. */

		  char *vstrcat(char *first, ...)
		  {
			  size_t len = 0;
			  char *retbuf;
			  va_list argp;
			  char *p;
			  if(first == NULL)
				  return NULL;
			  len =	strlen(first);
			  va_start(argp, first);
			  while((p = va_arg(argp, char *)) != NULL)
				  len += strlen(p);
			  va_end(argp);
			  retbuf = malloc(len +	1);    /* +1  \0 */
			  if(retbuf == NULL)
				  return NULL;		  /* 訡 */
			  (void)strcpy(retbuf, first);
			  va_start(argp, first);
			  while((p = va_arg(argp, char *)) != NULL)
				  (void)strcat(retbuf, p);
			  va_end(argp);
			  return retbuf;
		  }

	뢠 㭪 ਬ୮ ⠪:

	       char *str = vstrcat("Hello, ", "world!",	(char *)NULL);

	    ਢ ⨯  ᫥ 㬥.
        ( ⠪,  ᫥ 맮 ⠪ 㭪樨 㦭 ᢮
        ).

        ᫨  ࠧࠡ뢠  ਥ ⠭ ANSI, ९
	। 㭪樨 	⨯ ("char *vstrcat(first) char *first; {")
         <stdio.h>  <stdlib.h>, 

                    "extern char *malloc();" ,

         ᯮ int  size_t. , ਤ 㤠 ਢ
        (void)  ᯮ짮 varargs.h  stdarg. ⥫
        ᮮࠦ ᬮ  ᫥饬 .

	,   ⨯ 㭪権  ᯨ᪮ 㬥⮢	६
	  㪠뢠 ⨯ 㬥⮢.  ,  	㬮砭
	㤥 ந室 "७" ⨯ 㬥⮢	(.  5.8).
         ⠪ ,  ⨯ 㫥 㪠⥫    㪠
        (.  1.2).

          : K&R II . 7.3 c. 155, . B7 c. 254; H&S
          . 13.4 c. 286-9; ANSI  4.8  4.8.1.3 .

7.2	  㭪,  ,  printf, 砫 ப
        ଠ  ६ ᫮ 㬥⮢,  ⥬  믮
        襩  ࠡ ।    printf?

:	ᯮ vprintf, vfprintf,  vsprintf.

        ।  ணࠬ "error",  ᫥ ப "error: "
        ⠥ ᮮ饭  訡  ᨬ  ப.


		  #include <stdio.h>
		  #include <stdarg.h>

		  void
		  error(char *fmt, ...)
		  {
			  va_list argp;
			  fprintf(stderr, "error: ");
			  va_start(argp, fmt);
			  vfprintf(stderr, fmt,	argp);
			  va_end(argp);
			  fprintf(stderr, "\n");
		  }

	⮡ ᯮ짮   䠩	<varargs.h>  <stdarg.h>,
	  㭪樨

		  void error(va_alist)
		  va_dcl
		  {
			  char *fmt;

	 ப	 va_start

		  va_start(argp);

	  ப

		  fmt =	va_arg(argp, char *);

	 맮 va_start	 vfprintf. ,  ᫥	va_dcl 
	窨 	⮩.

          : K&R II . 8.3 c. 174, . B1.2 c. 245; H&S
          . 17.12 c. 337; ANSI . 4.9.6.7, 4.9.6.8, 4.9.6.9 .

7.3	 ।,	᪮쪮	㬥⮢ । 㭪樨?

:       ७ᨬ ணࠬ ⠪ ଠ 㯭. 
         ⥬  ⠭ 㭪 nargs(),   
        ᥣ 뫠 ᮬ⥫쭠, ᪮ 筮  㭪 頥
        ⢮ । 設 ᫮,   ᫮ 㬥⮢.
        (  ᫠  饩 窮 筮 ।  ᪮쪨
        ᫮).

	 㭪 	६ ᫮ 㬥⮢   ᯮᮡ 
	ᠬ 㬥⠬ ।  ᫮. 㭪樨 ⨯ printf ।
        ᫮ 㬥⮢  ᯥ䨪ࠬ ଠ (%d  ..)  ப
        ଠ ( 祬  㭪樨 ⠪ ᪢୮  ᥡ 
        ᮢ ᯨ᪠ 㬥⮢  ப ଠ). 㣮 饯ਭ
        ਥ - ᯮ짮 ਧ  ᯨ᪠ (  ᫠ 0,-1, 
        㫥 㪠⥫, ਢ  㦭 ⨯).
         ਬ 㭪権 execl  vstrcat ( 1.2  7.1).

7.4	  㤠 	⮣, ⮡  va_arg 頫 㬥
	⨯ 㪠⥫--㭪.

:      樨  ९뢠 ⨯, 묨 筮 
        va_arg,  㤠祩, ᫨ ⨯ 㬥 ᫨誮 ᫮ -
        த 㪠⥫  㭪. ᫨, , ᯮ짮 typedef 
        । 㪠⥫  㭪,   㤥 ଠ쭮.

          : ANSI . 4.8.1.2 c. 124.

7.5	  㭪  ६ ᫮ 㬥⮢,  ।
	 㣮 㭪樨  ६ ᫮ 㬥⮢?

:	 饬	砥  ࠧ訬.  ⢥ ன 㭪樨 㦭
        ᯮ짮 ⠪,  ਭ 㪠⥫ ⨯ va_list,  
         vfprintf  ਢ  ਬ. ᫨ 㬥 
        । ।⢥ (a  १ 㪠⥫ ⨯ va_list), 
         㭪 ਭ ६ ᫮ 㬥⮢ ( 
         ᮧ ୠ⨢ 㭪, ਭ 㪠⥫
        va_list),  ᮧ ७ᨬ ணࠬ . ஡
          襭, ᫨    ᥬ ᮮ⢥饩
        設.

7.6      맢 㭪  ᯨ᪮ 㬥⮢, ᮧ  
	믮?

:	  ᯮᮡ,   ࠭஢ ७ᨬ. ᫨
	  ⫨ , ࠧ ।	⠪ ᯨ᪮,  
	 ᪮쪮 㤭 ,  	஡...
	(. ⠪  16.11).


	8. 㫥 ࠦ  ६.

8.1     ६  ⨯ ࠢ쭥 ᯮ짮  㫥?
        祬  몥   ⠭⭮ ⨯ ᪨ ६?
         ᯮ짮  祭 true  false - #define  enum?

:	 몥	  ⠭⭮ ⨯	᪨ ६, ⮬ 
	롮 ⭮ ⨯ ᭮뢠    ,  
        먣 ६.     ணࠬ
        (ᯮ짮 ⨯ int  㫥 ६   ॥,
        ⮣  ᯮ짮 ⨯ char  ).

	롮  #define  enum - 筮  ,  ᯮ  ⮬, 
	,  ᮡ  (  	.  9.1).
	ᯮ    ਠ⮢

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

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

         ᫥⥫쭮  । ணࠬ  ஥ ᯮ
        ᫠ 1  0.
        (,  㫥 ६ १ enum ।⥫쭥,
        ᫨ ᯮ㥬  ⫠稪 뢠 ᮤন
        enum-६).

	 । ⠪ ᯮᮡ :

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

	  "ᯮ⥫" 

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

	 ,   ⨬ 먣뢠 ( .	 8.2 ,  ⠪
	 1.6).

8.2	  ᭮	 祭 TRUE  1,     
	ࠢ  祭 ᬠਢ  ⨭?  ᫨
	 ࠢ  ஥ 㫥	  ,
	⫨筮  1?

:      ⨭ (-!),   㫥 祭 ᬠਢ 
          祭 "",   ਬ ⮫쪮 " 室", 
         㫥 ६.  㫥 ६ 
        ஥ ஬, ࠭,   ࠢ 0  1.
        ⥫쭮, ࠢ

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

	  ᬥ譮  룫廊, 㤥 	ᥡ,  , ᫨
	祭 TRUE ᮮ⢥ 1.  ࠢ,  ஢ન  TRUE
	 FALSE	⥫, ᪮	  㭪樨
	(⮨ 㯮 isupper,isalpha  ..),   砥 ᯥ
	㫥 祭, ஥ _	易⥫쭮_ ࠢ 1. (஬ ⮣,
	᫨ 	,	 "if((a == b) == TRUE)"  祬 "if(a == b)" ,
	 祬      

		 "if(((a == b) == TRUE)	== TRUE)"?

        襥 "楢" ࠢ ⮨  ⮬, ⮡ ᯮ짮 TRUE 
	FALSE (  ) ⮫쪮 	㫥	६ 
        㬥⠬ 㭪樨 ᢠ 祭   祭
        頥 㫥 㭪樥,    ࠢ.

	ம। ९ TRUE  FALSE  ᯮ  襩
	來,   ⮬,   祭 	.
	(. ⠪  1.7,	1.9).

          : K&R I . 2.7 c. 41; K&R II . 2.6 c. 42,
          . A7.4.7 c. 204, . A7.9 c. 206; ANSI .
          3.3.3.3, 3.3.8, 3.3.9, 3.3.13, 3.3.14, 3.3.15, 3.6.4.1, 3.6.5...
          ...  娫  ९?



	9. , ᫥  ꥤ.

9.1      ࠧ  enum  冷 ४⨢ ९ #define?

:	 饥 ६ ࠧ .  , , ।竨
	 	襭, ⠭ ANSI ⢥ত,  ந쭮 
	⮢ ᫥    ᢮ 楫᫥
	祭. (  ᢮	祭   ਢ
	⨯, 	  ࠧ㬭	ᯮ짮 ᫥ 
	 訡.)

	 २⢠ ᫥  ⮬,   祭
	 ⮬᪨,	 ⫠稪  ।⠢	祭
	᫨ ६	 ᨬ쭮 ,  ⠪  ⮬, 
        ᫨ ६ 稭  ࠢ ⥩
        ⢨. (  ⠪ 뤠 ।।, 
        ᫥ 㬠 ᬥ訢  楫᫥묨 ६묨.
         ᬥ襭  ᬠਢ   宣 ⨫,
         ଠ쭮   饭). ⮪ ᫥  ⮬, 
         ணࠬ  ⥩ ࠢ ࠧ஬ ६ (
        ।०ﬨ  ⮦).

          : K&R II . 2.3 c. 39, . A4.2 c. 196; H&S
          . 5.5 c. 100; ANSI . 3.1.2.5, 3.5.2, 3.5.2.2 .


9.2      蠫,    ஢  楫,   
         । 㭪  饭 ,   K&R I ᪠, 
        ⮣  .

:       K&R I ᪠ ,  ࠭祭  樨  ࠬ
           ᫥  ;  樨 㦥 뫨
            ,    K&R I.
             ন ஢
        ,  ᮢ६   ⠪ ,
        ।ᬮ७ ⠭⮬ ANSI C, ⠪     
         ஢  ।  㭪.

          : K&R I . 6.2 c. 121; K&R II . 6.2 c. 129; H&S
          . 5.6.2 c. 103; ANSI . 3.1.2.5, 3.2.2.1, 3.3.16 .

9.3	 堭 ।	  ?

:	, ।	㭪樨	 ࠬ, 筮 楫
	ࠧ頥  ⥪, ᯮ	室 ⢮ 設	᫮.
        (  ᭨ 㦭  ணࠬ ।
        । 㭪樨 㪠⥫    ᠬ ).
	 	 㭪ﬨ    , 
         㪠뢠 ⥫ ন ஬
        "" 㬥.    ᯮ 
          䨪஢  ,   
         ४ᨢ 맮 ⠪ 㭪樨,  ⨢
        ⠭ ANSI.

          : ANSI .2.2.3 c. 13.

9.4	 ணࠬ ࠡ⠥ ࠢ쭮,  ᫥ 襭 뤠 
	⨢ . 祬?

		  struct list
			  {
			  char *item;
			  struct list *next;
			  }

		  /*  㭪 main	*/

		  main(argc, argv)
		  ...

:      - ய饭 窨  ⮩  ⠥,  main
        頥 . (   㭪樥 main 㤭
        ।, 蠥 ਩).     
         筮 ᯮ  ⢥ ⮣ ࠬ
        㪠⥫, , ᣥ஢  main() ⠥ ਭ 
        㬥,  । (  砥 ⮢  )
        ⮫쪮 .  . ⠪  17.21.

9.5	祬  ࠢ ?

:        ࠧ㬭 ᯮᮡ ᤥ ࠢ 
        ᮢ⨬  ஢ த 몠 . ⮢ ࠢ
           - 砩   ᯮ㥬 "ઠ"
        (⠪  室, ⮡ ࠭ ࠢ 
        ᫥ ; .  9.10  9.11). 童 ࠢ
        ॡ  ਥ ⢠  設
        権  砥  .

        ᫨ 室 ࠢ  ,   ⮣ ᢮
	ᮡ⢥  㭪. C++   ᮧ  ==, ⮡
	易	  襩 㭪樥.

          : K&R II .6.2 c. 129; H&S . 5.6.2 c. 103; ANSI
          Rationale ࠧ. 3.3.9 c. 47.

9.7	 /   䠩/ 䠩 ?

:	   䠩	 ।⢥ 		fwrite:

	    fwrite((char *)&somestruct,	sizeof(somestruct), 1, fp);

	a c⢥騩 맮	fread ⠥	  䠩.
         䠩, ᠭ ⠪ ࠧ  __ ᮡ ७ᨬ
        (.  9.11  17.3).  ⠪,    ⥬
        㦭 ᯮ짮  㭪樨 fopen 䫠 "b" .

9.7	  ணࠬ,	 ன  । ⠪:

		  struct name
			  {
			  int namelen;
			  char name[1];
			  };

        ⥬   樨  , ⮡ ᨢ name  ᥡ
           ᪮쪮 ⮢.  樨 /?

:       ਥ ७,      "᫨誮
        䠬 饭  ॠ樥 ". ANSI ,  室 
        ।  ࠧ 童    ᮮ⢥
        ⠭,  ⠫쭮 㦤  易  ⨬ ஡
         室    ᮢ  ⢥⮢. 宦, , 
        ᠭ ਥ 㤥   ਭ ᥬ 묨
        ॠﬨ . (, ⥫쭮 ஢騥 ࠭ ᨢ,
         뤠 ।०).   客 㤥  
        ६ 祭 讣 ࠧ 祬 祭 .  襬 砥

		  ...
		  char name[MAXSIZE];
		  ...

	 MAXSIZE , 祬	  , ஥ 㤥 ࠭
         ᨢ name[]. ( ,  ⠪ 䨪 㤥
        ᮮ⢥⢮ ⠭).

          : ANSI Rationale . 3.5.4.2 c. 54-5.

9.8	 । ᬥ饭	童 	 ?

:	᫨  , 室 ᯮ짮  offsetof, 
	। ⠭⮬ ANSI; . <stddef.h>. ᫨	 ,
	। ⠪ (   100% 쭠)  ॠ

		#define	offsetof(type, mem) ((size_t) \
			((char *)&((type *) 0)->mem - (char *)((type *)	0)))

	  ஢ ᯮ짮 ⮣   
	.
	 ⮬,  ᯮ짮	offsetof(), ᬮ ᫥騩 .

          : ANSI . 4.1.5, Rationale . 3.5.4.2 c. 55.

9.9      ⢨   童      ६
        믮 ணࠬ?

:	 ⠡  	ᬥ饭, ᯮ  offsetof().
	饭 童  b   ⨯ a ࠢ

		  offsetb = offsetof(struct a, b)

	᫨ structp 㪠뢠  砫 ,  b	- 童  ⨯
        int, ᬥ饭 ண 祭 , b   ⠭
        ᢥ  

		  *(int	*)((char *)structp + offsetb) =	value;


9.10    祬 sizeof 뤠 訩 ࠧ ୮ ⨯, 祬  ,
             譨 ᨬ?

:       ந室 ( ⠪ ७ "" ; .
        ⠪  9.5),  室 ࠢ   ᨢ
        뢭 .

9.11	  ⠢  	, 	ਢ  
          ९ "筮" /뢮  ࠡ 
        譨 䠩.   ⪫ "மࠧ"  -
	஫஢ ࠢ?

:       襬 , ,  ७, (ਬ,
        #pragma), ஥   ᤥ,  ⠭⭮ ᯮᮡ 
        . . ⠪  17.3.

9.12	   砫 祭 ꥤ?

:	⠭ ANSI ᪠	樠 ࢮ 童 ꥤ.
	  ⠭⭮ ᯮᮡ 樠樨 㣨	童.
	( ⥬   ⠪	ᯮᮡ	  ஢, 
          ন - 樠樨).

9.13     । 㭪樨 ,  ன  童 - ⠭?

:      ᪮  몥    ᮧ ﭭ 祭
        ୮ ⨯, 室 ᮧ ६ .


	10. 樨

10.1     ⨯ 楫᫥ ६ ᯮ짮?

:	᫨  ॡ 訥 ᫠,	(	32767  
        -32767), ᯮ ⨯ long. ᫨ ,    
	(訥 ᨢ   ), ᯮ short.  
	⠫  ᯮ int. ᫨	 筮 ।
         ९ /  ᫠   祭, ᯮ
        ᮮ⢥騩 ⨯ unsigned. (  ⥫  ᮢ⭮
        ᯮ짮 ⨯ signed  unsigned  ࠦ). 宦
        ᮮࠦ ਬ  롮  float  double.

         ⨯ char  unsigned char  ᯮ짮 
        楫᫥ ⨯ 襣 ࠧ,  ⮣  ।,
        祬  - ।᪠㥬 ६   饣
        ࠧ ணࠬ.

	 ࠢ, 祢,  ਬ  ᠬ ६, ᪮
	   ᮢ襭 । ⨯.

        ᫨ 室  ६ _।_ ࠧ,
        (⢥ 稭    ⪠ 㤮⢮ 譨
        ॡ  ࣠樨 ; .,஬ ⮣,  17.3),
        ६   ᮮ⢥騬 typedef.

10.2	   	64- ⨯   64- 設?

:       ⠢騪  ஢  64- 設 ন
        ⨯ long int  64 . 㣨 , ,  ᫨誮 
        㦥 ᠭ ணࠬ   sizeof(int) == sizeof(long) == 32
        ,   64- ⨯ long long ( __longlong).

	ணࠬ, 騥  	ணࠬ, ,
	᫥⥫쭮, ஢ 64- ⨯   ।⢠ typedef.
	ࠡ稪 ஢, 騥 室  
	楫᫥ ⨯ 襣 ࠧ,   	 "騩
	 ࠩ 	64 "	( ⢨⥫쭮  ⨯, ண 
	 ࠤ樮 ),  	 "騩 筮 64 ".

10.3	  ᮢᥬ  砥 ।	易 ᯨ᪠.  

		  typedef struct
			  {
			  char *item;
			  NODEPTR next;
			  } *NODEPTR;

	  뤠 ᮮ饭  訡. 	  
	ᮤঠ 뫪  ᥡ?

:	  , 筮 ,  ᮤঠ 㪠⥫ 	ᥡ;
        㦤 ⮣   ਬ  ࠣ 6.5 K&R 
          .  ਢ ⥪ ஡ ⮨  ⮬,
         । NODEPTR  祭  ⮬ ,  
        童  "next".  ࠢ, ᭠ ᭠砫 
        ⥣ ("struct node").   "next"  "struct node
        *next;", /   typedef 楫   楫
        ᫥  .     襭 㤥 ⠪:

		  struct node
			  {
			  char *item;
			  struct node *next;
			  };

		  typedef struct node *NODEPTR;

          ࠩ   㣨  ࠢ ᯮᮡ
        ᤥ   ᠬ.
	室	஡,  蠥 ਬ୮ ⠪	,  
         ⪥ ।   ।⢠ typedef  c뫠
          㣠 .

          : K&R I . 6.5 c. 101; K&R II . 6.5 c. 139; H&S
          . 5.6.1 c. 102; ANSI . 3.5.2.3 .

10.4      ᨢ  N 㪠⥫  㭪樨, 騥
        㪠⥫  㭪樨 騥 㪠⥫  char?

:        ࠩ   ਠ ⢥:

	  1.  char *(*(*a[N])())();

	  2.   樨	 蠣, ᯮ typedef:

              typedef char *pc;   /* 㪠⥫  char */
              typedef pc fpc();   /* 㭪, 㪠⥫  char */
              typedef fpc *pfpc;  /* 㪠⥫ .. .  */
              typedef pfpc fpfpc();   /* 㭪, ... */
              typedef fpfpc *pfpfpc;  /* 㪠⥫ ... */
              pfpfpc a[N];            /* ᨢ... */

	  3. ᯮ짮 ணࠬ cdecl,  ॢ  ᪮
	     	  .

		  cdecl> declare a as array of pointer to function returning
			   pointer to function returning pointer to char
		  char *(*(*a[])())()

        cdecl  ⠪ ᭨ ᫮ 樨,   
        ਢ ⨯, ,   ᫮ 権, த ⮫쪮 
        ࠧ࠭,   㣫 ᪮,   祭
        㬥. ᨨ cdecl    comp.sources.unix (. 
        17.12)   K&R II.        , 
          ᫮ 権,   " ",
        ("  ᯮ짮").

          : K&R II . 5.12 c. 122; H&S . 5.10.1 c. 116.

10.5	  મ᪨    ᫮ ﭨ,  	
          㭪権   ﭨ.  , ⮡ ᬥ
        ﭨ ந室 ⥬  㭪樥 㪠⥫  㭪,
        ᮮ⢥⢥ ᫥饬 ﭨ. ,  㦨
        ࠭祭  堭 権 몠 :   
        㭪,  㪠⥫  㭪,  㪠⥫
         㭪,  㪠⥫  㭪...

:	, ।⢥ 	ᤥ	.	 㭪 頥
	饭 㪠⥫ 	㭪,  ஬ । 맮 㭪樨
	㤥 ਬ 	ਢ ⨯,    頥
	, ᮤঠ ⮫쪮 㪠⥫  㭪, 
	 .

10.6	  뤠 ᮮ饭	 ୮ ୮ 樨,
	  ⮫쪮 ࠧ । 㭪  ⮫쪮 ࠧ 맢.

:	ࠧ㬥,  㭪樨, 뢠  樨	 
	 (  ⠪	樨), 	祭 ⨯ int.
	 ਢ  ⨢, ᫨ ᫥⢨ 㭪 ஢
	. ᫨ 㭪 頥 楫 祭,   
          ⮣  㤥 맢.

          : K&R I . 4.2 c. 70; K&R II . 4.2 c. 72; ANSI
          . 3.3.2.2 .

10.7     訬 ࠧ ஢  । 
        ६?

:	० ᥣ ⨬,     	_権_ (	
         䠩)  "쭮" (ண  "譥" )
        ६, ( 㭪樨),   ᥣ  _।_.
        (। -  ⠪ ,  ன ⢨⥫쭮
        뤥   ६,  ᢠ, ᫨ 㦭,
        砫쭮 祭).   ᥣ  ।  -
         ( ணࠬ   ) .c 䠩,  譥 樥 
         䠩 .h,   室 砥  
        #include. ,  ஬ 室 । ६, ⠪
           䠩  譥 樥, ⮡ 
         ஢ ᮮ⢥⢨ 樨  ।.

	 ࠢ ᯥ稢 ᮪ 쭮 ணࠬ 	室 
        ᮣᨨ  ॡﬨ ⠭ ANSI C. ,  
          騪  ⥬ UNIX ᯮ " ",
         ࠧ蠥  ।  樠樨.
         쬠 ࠭   ॡ 
        樠樨, ⮡ ⫨ ।  譥 樨.

          ९୮   ந ⠪,  
        㤥 ᤥ  ,   䠩,   c  #define
        "ॢ"  । 筮   祭 
        䠩.

          : K&R I . 4.5 c. 76-7; K&R II . 4.4 c. 80-1;
          ANSI . 3.1.2.2 (ᮡ Rationale), . 3.7, 3.7.2,
          . F.5.11; H&S . 4.8 c. 79-80; CT&P . 4.2 c. 54-56.


10.8	 砥 祢 ᫮ extern  樨 㭪樨?

:      ᫮ extern  樨 㭪樨   ᯮ짮 
        ᮮࠦ 襣 ⨫  㪠  ,  ।
        㭪樨, , 室  㣮 䠩. ଠ쭮 

		  extern int f();
	  
		  int f();

	  ࠧ.

          : ANSI . 3.1.2.2 .

10.9    , , ,  ꢫ 㪠⥫  㭪樨,   
	樠஢?

:	ᯮ  ⠪

		  extern int func();
		  int (*fp)() =	func;

	  㭪樨   ࠦ,  㭪 	뢠
        ( ,   㭪樨  ᫥ "(" ),  "᢮稢",
           砥 ᨢ,  㪠⥫ (..  ࠧ ᠭ
        ).

          㭪樨 筮 室, ⠪  
         譥 㭪樨   砥  ந室 (-⠪
        - ⮣,    㭪樨  ᫥ "(" ).

10.10	 ,  㭪樨 뢠	  㪠⥫   
	㭪樨.  祬 ?

:       ࢮ砫쭮  ᮧ⥫  㪠⥫  㭪 
         "ॢ"   㭪    *
         ⥫쭮  㣫 ᪮  ࠢ쭮 樨.

		  int r, func(), (*fp)() = func;
		  r = (*fp)();

           ࠧ,  㭪樨 ᥣ 뢠  
        㪠⥫,   "騥" 㭪樨  ॢ 
        㪠⥫ ( ࠦ,   ந室  樠)  
         ਢ  - ஡.  , ப ࠭
        ஬ pcc  ਭ ⠭⮬ ANSI, 砥,  ࠦ

		  r = fp();

        ࠡ⠥  ࠢ쭮, ᨬ  ⮣,  ⠪ fp -
	㭪	 㪠⥫  . ( ᥣ ᯮ 筮;
	  ᤥ - 㣮	 㪠⥫ 	㭪,
	  ᫥ ᯨ᮪ 㬥⮢, ஬ 	맢	㭪).
	  *	᭮  	 ࠧ襭 ( ४,
	᫨  ᮢ⨬  묨 ࠬ).

          : ANSI . 3.3.2.2 c. 41, Rationale c. 41.

10.11	  ਣ 祢 ᫮ auto?

:	,  諮  㯮ॡ.


	11. C⠭	/뢮.


11.1	 宣  ⠪ ப:

		  char c;
		  while((c = getchar())	!= EOF)...

:	-, ६, ன ᢠ 饭 getchar
        祭,   ⨯ int. getchar    
        祭  ᨬ,  ⮬ ᫥ EOF. ᫨ 祭, 饭
        getchar ᢠ ६ ⨯ char,   
         ਭ  EOF,  EOF ᪠ (ᮡ ᫨ ᯮ짮
        ⨯ unsigned char) ⠪,  ᯮ  㤥 .

          : CT&P .5.1 c. 70.

11.2	  ᨬ '%'  ப ଠ printf?  ஡
	\%,   ⮣	祣  諮.

:	 㤢  業 %%	.

          : K&R I . 7.3 c. 147; K&R II . 7.2 c. 154; ANSI
          . 4.9.6.1 .

11.3	祬  ࠡ⠥ scanf("%d",i)?

:       㭪樨 scanf 室  ६,   
        ᠭ , 㦭  scanf("%d", &i);


11.4	祬  ࠡ⠥

		  double d;
		  scanf("%f", &d);

:	scanf ᯮ ᯥ䨪 ଠ %lf  祭 ⨯ double
	 %f  祭 ⨯ float. (	  室⢮ 
	printf,	  ᮮ⢥⢨  ࠢ ७ ⨯ 㬥⮢
	ᯥ䨪 %f	ᯮ   float, ⠪	  double).

11.5    祬 ࠣ ணࠬ

		  while(!feof(infp)) {
			  fgets(buf, MAXLINE, infp);
			  fputs(buf, outfp);
		  }

          ᫥ ப?

:         ᪠.  EOF  ⮫쪮 _᫥_ ⪨
        ,  㭪  몠   䠩.
         ᥣ 室  ஢ 祭, 頥
        㭪樥 , ( 襬 砥 fgets);  ᯮ짮 feof()
        筮   室.

11.6	祬  ⨢ ᯮ짮	gets()?

:      ⮬    । ९ ,
        㤠  ,  㭪樨 gets()  ᮮ 
        ࠧ.    3.1,  ஬ ਢ ࠣ ணࠬ,
        뢠騩  gets()  fgets().


11.7    祬 ६ errno ᢠ 祭 ENOTTY ᫥ 맮
	printf()?

:       ॠ樨 ⠭⭮ ⥪ /뢮 ᪮쪮
         ᢮ , ᫨ ⠭⭮ ன⢮ 뢮 -
        ନ. ⮡ । ⨯ ன⢠, 믮 ,
         稢 㤠筮 (c ᮮ饭 ENOTTY), ᫨ ன⢮
        뢮 -  ନ.  뢮 蠥 ᯥ譮, errno  
        ᮤন ENOTTY.

          : CT&P . 5.4 c. 73.

11.8		 ணࠬ,	 ⠪	஬ १  ᥣ
	⮡ࠦ 	࠭,	ᮡ   ணࠬ । 
	  (pipe) 㣮	ணࠬ.

:	 ᥣ  ᯮ짮 fflush(stdout),  ६
	㦭  ,  뤠 ணࠬ. ᪮쪮 堭 
	" 㦭 ६" ⢨ fflush, , 宦,   ࠢ쭮
        ࠡ⠥  ⮬ 砥,  stdout -  ନ. (. 
        11.7).

11.9     ⥭   㭪樥 scanf  ⢮, 
        ணࠬ ᠥ,   ॢ ப.

:      㭪 scanf 뫠 㬠    ᢮ ଠ,
        室  ஬  ।  ⥭  .
          ᠥ ⢥  ,  ᨬ "\n"  ଠ⭮ ப
          砥,  scanf 㤥  ॢ ப. 
        ,  scanf 㤥   뢠  ⨢訥 
        ஡  (.. ᨬ ஡, ⠡樨,  ப,
         ⪨, ⨪쭮 ⠡樨   ࠭).
        宦 㤭 砥,  scanf "ॢ", 稢
          ᥡ ᫮ . -  ஡ 
           ப   fgets,  ⥬ ᯮ짮 sscanf
         㣨 㭪樨, ࠡ騥  ப, ⮡ ஢
         ப  . ᫨ ᯮ sscanf,  
        ஢ 頥 祭  㢥७  ⮬,  ᫮
        ⠭ ६ ࠢ .

11.10      ᮤন 䠩,  祣 ᯮ fopen 
        ० "r+",   ப, ⥬  ஢ ப
         䠩,    祣  砥.

:      ६ 맮 fseek ।   䠩.  
	   砫 ப,   	९; ஬
	⮣, ᥣ 室	맢	fseek  fflush  ⥭ 
		 ⥭/  ० "+".  ⠪,	 
	   筮 ⠪	 ᫮ . . ⠪
	 17.4.

          : ANSI . 4.9.5.3 c. 131.

11.11	 	  ,    RETURN?

:	  16.1

11.12     ⬥  , ⠪, ⮡ , 
        짮⥫,  ⠫  ᫥饬 ?   
	fflush(stdin)?

:	fflush । ⮫쪮  뢮. ᪮ । "flush"
        ("뢠") 砥 襭  ᨬ   ( 
        뢠 ), ⠭   ᨬ   㭨⮦
          fflush.    ⠭⭮ ᯮᮡ ஢
        ᨬ,   ⠭  室  stdio.    ⠪,
            ᤥ, ᪮ ⠭ ᨬ 
          㣨,   樮 ⥬, .

11.13    ७ࠢ stdin  stdout  䠩?

:	ᯮ freopen.

11.14	᫨  ᯮ짮 freopen,      stdout (stdin)?

:      ᫨ 室 ४  stdin (stdout)  䠩,
        襥 㭨ᠫ쭮 襭 -  ᯥ ᯮ짮 freopen.
        ஡ ᯮ짮 㪠⥫  䠩, ஬   
        ᢮    祭, ⠢ 祭 stdout (stdin)
        ஭.

11.15	 ⠭  䠩  㪠⥫	  䠩?

:	 ஡,  , ࠧ訬.  砥 樮
	⥬	UNIX, ਬ,	ॡ   ᥬ  (,
	, ॡ ᯥ樠쭮 ࠧ襭), 	  
	㤠筮, ᫨ 㪠⥫  䠩   (pipe) 	 易
         㤠 䠩. ஬ ⮣, 稢 ⢥ 㤥 祭 
        䠩  ⢥묨 ﬨ.   ᥣ ᠬ  
         ⨨ 䠩 (, ᯮ ᯥ樠 㭪樨,
        뢠   ᫥ fopen);

	12.  㭪樨.

12.1	祬 strncpy  ᥣ 蠥 ப-१ ᨬ '\0'?

:	strncpy	뫠 㬠  ࠡ⪨ ⥯ 㦥 ॢ 
	 - "ப" 䨪஢ ,  易⥫쭮 
        ᨬ  '\0'.  ,  ᪠, strncpy  ᮢᥬ 㤮
        ᯮ짮  㣨 , ᪮  ਤ 
        ᨬ '\0' .

12.2	  ஢ ᨢ ப   qsort, ᯮ
	 ࠢ strcmp,   	祣  砥.

:	    "ᨢ ப", , , 	 
	"ᨢ	㪠⥫  char". 㬥 㭪樨 ࠢ, ࠡ饩
	   qsort -  㪠⥫  ࠢ ꥪ,	 
	砥 - 㪠⥫  㪠⥫	 char. (筮, strcmp ࠡ⠥
	  㪠⥫ﬨ 	char).

        㬥 楤 ࠢ ᠭ  "饭 㪠⥫"
        const void *  char *.    ॢ饭  ,  
        ।⠢  ᠬ , .. (char **)   㦭 
        뫪   * ; ⮣ strcmp   ,  㦭 
        ࠢ.   㭪 ࠢ ਬ୮ ⠪:

	  int pstrcmp(p1, p2)	  /* ࠢ ப, ᯮ	㪠⥫ */
	  char *p1, *p2;	  /* const void	*  ANSI C */
	  {
              return strcmp(*(char **)p1, *(char **)p2);
	  }

          ,   K&R II . 5.11 㦤 㭪 qsort,
		⫨砥  ⠭⭮.

12.3	   ஢ ᨢ    qsort.
	楤 ࠢ,   ᯮ, ਭ  ⢥
	㬥⮢ 㪠⥫ 	,   뤠	ᮮ饭
	 ୮ ⨯	㭪樨	ࠢ.   ८ࠧ 㬥
	㭪樨, ⮡ 	ᮮ饭  訡?

:	८ࠧ   ᤥ  㭪 ࠢ, 
	    ਭ 㬥	⨯ "饭
        㪠⥫ (const void *  char *)   ᠭ   12.2.
	㭪	ࠢ 	룫拉 ⠪:

	   int mystructcmp(p1, p2)
	   char	*p1, *p2;	   /* const void *  ANSI C */
	   {
		   struct mystruct *sp1	= (struct mystruct *)p1;
		   struct mystruct *sp2	= (struct mystruct *)p2;

		   /* ⥯ ࠢ sp1->-㣮   sp2-> ... */
	   }

        ( 㣮 ஭, ᫨  㪠⥫  ,
        室 ᢥ ,    12.2:

                    sp1 = *(struct mystruct **)p1 .)

12.4	 ८ࠧ ᫠	 ப (, ⨢ atoi)?
	 	㭪	itoa?

:	 ᯮ sprintf. (室	㤥 뤥  
	१, .		3.1  3.2. ᯮ,  sprintf -
	᫨誮	ᨫ쭮	।⢮, ஥ 	ਢ  室
	  㢥祭 ६ 믮,	 ᭮.  ࠪ⨪
	sprintf	ࠡ⠥ ).

          : K&R I .3.6 c. 60; K&R II .3.6 c. 64.

12.5        ६   ணࠬ?

:	 ᯮ 㭪樨 time, ctime,	/ localtime. (
	㭪樨	  ,	 祭  ⠭	ANSI).
	 ⮩ ਬ:

		  #include <stdio.h>
		  #include <time.h>

		  main()
		  {
			  time_t now = time((time_t *)NULL);
			  printf("It's %.24s.\n", ctime(&now));
			  return 0;
		  }

          : ANSI . 4.12 .

12.6     ,  筠 㭪 localtime ࠧ 祭 time_t
         ⤥ 童  tm,  㭪 ctime ॢ頥 time_t 
        ப ᨬ.    த   ॢ
         tm  ப ᨬ  祭 time_t?

:      ⠭ ANSI । ⥭ 㭪 mktime, 
        ८ࠧ  tm  time_t. ᫨   
        ন mktime, ᯮ   饤㯭 ᨩ
        ⮩ 㭪樨.

	ॢ	ப  祭 time_t 믮 ᫮ - 讣
	⢠ ଠ⮢ 	 ६,    ᯮ.
          ন 㭪 strptime; 㣠
        ୠ 㭪 - partime ப ࠭  ⮬ RCS,
          㢥७,   㭪樨   ⠭.

          : K&R II . B10 c. 256; H&S . 20.4 c. 361; ANSI
          . 4.12.2.3 .

12.7     ਡ n   ?  ᫨ ࠧ  ?

:	襤訥  ⠭ ANSI/ISO 㭪樨 mktime  difftime  
	 襭  ஡. mktime() ন ଠ
	, ..  אַ    tm, 㢥 
	㬥 童 tm_mday,	⥬ 맢 mktime(),	⮡ ଠ
	童 year, month,  day  ( ८ࠧ  祭 time_t).
	difftime()  ࠧ 	ᥪ㭤   稭
	⨯ time_t. mktime()  ᯮ짮  ᫥	祭
	time_t ࠧ	 . (, ,    ਥ
	   ,    ।⠢ 祭
        ⨯ time_t; ஬ ⮣, - 室  ⭥   ६
        த⥫쭮   筮 ࠢ 86400 ᥪ.).
        C. ⠪  12.6  17.28.

          : K&R II . B10 c. 256; H&S . 20.4, 20.5
          c. 361-362; ANSI . 4.12.2.2, 4.12.2.3 .

12.8	 㦥  砩 ᥫ.

:	 ⠭⭮ ⥪  	㭪	rand().	 ⮩
        㭪樨  襬     쭮,   ᮧ
        襩 㭪樨   祭 .

          : ANSI . 4.10.2.1 c. 154; Knuth Vol. 2 Chap. 3
          c. 1-177.

12.9	  砩 楫 ᫠  । ?

:	祢 ᯮᮡ

		  rand() % N

         N, 筮, ࢠ, 쭮 ,   
            砩 ᥫ 砥 ᢮
        砩.  (.  12.11).   ஡  த

               (int)((double)rand() / ((double)RAND_MAX + 1) * N)

        ᫨   ࠢ 㯮ॡ ᥫ  饩 窮,
        ஡

		  rand() / (RAND_MAX / N + 1)

	 ⮤ ॡ  RAND_MAX (ᮣ᭮ ANSI, RAND_MAX ।
	 <stdlib.h>. ।,  N   RAND_MAX.

12.10    ࠧ  ᪥ ணࠬ 㭪 rand() 뤠    
	᫥⥫쭮 ᥫ.

:       맢 srand()  砩 樠樨 
        砩 ᥫ.  ⢥ 㬥  srand()  ᯮ
        ⥪饥 ६,  ६, 襤襥     ( 
          쭠 楤 । ६  
        ; .   16.10).

          : ANSI . 4.10.2.2 c. 154.

12.11    室 砩 稭,   祭 true/false.
         ᯮ rand() % 2,  砥 砩 ᫥⥫쭮
	0,1,0,1,0....

:      ⢥  砩 ᥫ (訥,  , 
        ⠢  ஢)  祭  砩,  
           . ஡ ᯮ짮 訥 .
        .  12.9.

12.12	  ७ 	      :   ணࠬ  ࠧ
         ⥬              ⥯ ५. 室
	ணࠬ. 祬 		  ᯮ짮
		ᮮ饭
	"undefined external"
	

	  index?			  ᯮ strchr.
	  rindex?			  ᯮ strrchr.
	  bcopy?			  ᯮ memmove,
					   ⠬ 
					   ன 㬥 (. ⠪
					   5.15).
	  bcmp?				  ᯮ memcmp.
	  bzero?			  ᯮ memset,  
					  㬥⮬, ࠢ 0.

12.13     ६  ᮮ饭  訡 -  । 
        㭪樨,     室  䠩.

:       (ᮡ  ⠭ 㭪権) ᫥  㪠뢠,
         ⥪ 㦭   ணࠬ.
        . ⠪  15.2.

12.14    -०  ᮮ饭,   㭪樨 
        ।,   ᯮ  -l, ⮡  㪠 ⥪
	 ६ .

:	 騪  	室  ᯨ ꥪ 䠩
	 ⥪,  	㪠,   ⥪ ⮫쪮 
	㭪樨, 㤮⢮騥 뫪,  _ ⮬ _ 
	।묨. ⥫쭮,	冷	⭮⥫쭮 ꥪ 䠩,
	 ஬ ᫥ ⥪, ; 筮	ᬮ ⥪
	㦭   ᠬ . (ਬ,  樮 ⥬ UNIX
	頩 	-l  ᠬ   ப).

12.15	 室 室 ⥪ ணࠬ,		⢫ 
	 ப.

:       ⥪ regesp (⠢   UNIX - ⥬)
         ⠭  regexp   (Henry Spencer)
        (cs.toronto.edu ४਩ pub/regexp.shar.Z).
        . ⠪  17.12.

12.16    ࠧ  ப  ࠧ ஡묨 ࠬ
        㬥 (- த argc  argv  main)?

:	 設⢥ ஢  㭪 strtok, 	
	ॡ	㬭 饭,   	  
        㤮⢮ (ਬ, ࠡ  砥 祪).

          : ANSI . 4.11.5.8; K&R II .B3 c. 250; H&S
          . 15.7; PCS c. 178.


	13. Lint.


13.1	  ᠫ ணࠬ,    ᥡ ࠭.    	⠪?

:	஡ ᭠砫  lint (,  砬 -a, -c, -h,
	-p).  	 믮  ᠬ  ⮫쪮 
	,	 ᮮ   ⥫	  ⥪	ணࠬ,
		 ९	樨 .

13.2	 	 ᮮ饭 "warning: possible pointer alignment
	problem" ("।०:  ஡  ࠢ
	㪠⥫"), ஥ 뤠 lint ᫥  맮 malloc?

:	஡ ⮨  ⮬,	 lint 筮	 ,  	
	  ⮬ ᮮ,  malloc "頥 㪠⥫  
        ,   ࠧ ࠢ  ࠭ ꥪ 
        ⨯".   ᥢॠ malloc   #define 
        #ifdef lint,  㤠  ᮮ饭,  ᫨誮 אַ
        ਬ #define    㣨 ᫥ ᮮ饭 
        ⢨⥫쭮 ४ 맮. , 㤥  ஢
         ᮮ饭,  ,   ⮬᪨   grep -v.

13.3	  ANSI-ᮢ⨬ lint?

:	ணࠬ,  뢠 FlexeLint	( 	室 ⥪ 
        㤠묨 ﬨ  २묨 ६묨, ਣ
         樨  " " ⥬)    
        

		  Gimpel Software
		  3207 Hogarth Lane
		  Collegeville,	PA  19426  USA
		  (+1) 610 584 4261
		  gimpel@netaxs.com

	Lint  System	V release 4 ANSI-ᮢ⨬   	祭
	(	 㣨 C ⨫⠬)	 UNIX	Support	Labs  
	஢	System V.

	㣮 ANSI-ᮢ⨬	LINT (ᯮᮡ	⠪ 믮	ଠ
	䨪 ᮪ ஢) 뢠	LCLint  㯥 १
	ftp:  larch.lcs.mit.edu://pub/Larch/lclint/ .

        祣 譮, ᫨ ணࠬ lint .  ᮢ६
          ⮫  䥪⨢   訡 
        ⥫ ,   lint.



        14. ⨫.

14.1	  ⮩   

		  if(!strcmp(s1, s2))

	㦨	ࠧ殬 襣 ⨫?

:	⨫  ᮡ 訩, 	⠪  쬠 ୠ.
	 㤠祭  砥 ࠢ⢠ ப,    ᫮ 
	㬠,     ࠢ⢮.

	 ୠ⨢ ਥ, 易  ᯮ짮 

		  #define Streq(s1, s2)	(strcmp((s1), (s2)) == 0)

         ⨫ ணࠬ஢,   ஡ , 
	㦤 ᪮筮.	 襬 ⨫ ⮨ ६,  
	㧭,  	।.

14.2	 訩	⨫ 譥 ଫ ணࠬ?

:	K&R, ਢ ਬ, ஬  ᥣ ᫥, ᭠ 
	ਬ砭, ।⠢騬  ⥫ 롮:

              ᪮  ,   ᪫ 
             䠭⨧  ⠪ .  ࠫ   ᪮쪨
              ⨫. 롥  ⨫,   
             室,  筮  ᫥.

	 ⠪ , ⮡ ⨫  "". , ⮡  ਬ
	᫥⥫쭮	  ᮢ⨬	( ⨫   饤㯭
	ணࠬ). ᫨	ॡ  ணࠬ஢ ( ࠢ 
        ॡ )   ⨫,    뢠 
         ᢮ ᮡ⢥ ⨫,   ᫥ K&R.

        (  㤥  ᪮ ᯮ  २⢠ 
        ⪠ ⮣   ᯮ 㯮  ᪮. . ⠪
        Indian Hill Style Guide).

         㤭 । ⨥ "訩 ⨫" 砥  ᥡ
        ࠧ , 祬  譥 ଫ ணࠬ;  
        ᫨誮  ६    ᪮    ⢥
        ᫠ ⢠.

          : K&R . 1.2 c. 10.

14.3	  "Indian Hill Style Guide"   㣨	४樨 	⨫
	ணࠬ஢?

:	 㬥 㯭 १ ftp:


		ࢥ:			  ४਩:

		cs.washington.edu	~ftp/pub/cstyle.tar.Z
		(128.95.1.4)		(ࠡ⠭	Indian Hill guide)

		cs.toronto.edu		doc/programming

                ftp.cs.umd.edu          pub/style-guide


	15. 樨  饩 窮.

15.1      樨  饩 窮 믮 ࠭,   ࠧ
        設  ࠧ १.

:      砫 㡥,  祭  䠩 <math.h>  ࠢ쭮
         㣨 㭪樨, 騥 ⨯ double.

        ᫨    ⮬, ᯮ,  設⢮ ஢ ᯮ
        ଠ  饩 窮,    宦,   
        쭮  樨  ⢨⥫묨 ᫠. 
        稬,  訡  㣨 ᢮⢥  ᮡ
        ᫥   쬠 묨.

         㦭 ।,  १ 権  饩 窮
         묨,  ᮡ  ⮨ ஢  ࠢ⢮  ᫠
         饩 窮. (   㦭 砩
        䠪஢.)

          ஡  ᢮⢥  , ⠪   㣨 몠
	ணࠬ஢.  ⨪ 権 	饩 窮 ।
        筮 ⠪, "  믮 ";   㦤
           ୮ ண饩 樥 "ࠢ쭮"
         ᫥.

            ⢥     ᫨ 
        㤭  ᫥  饩 窮  ᯮᮡ 
        ८.     ணࠬ஢  ᮤঠ
           .

           : EoPS . 6 c. 115-8.

15.2      த - ᫥, 易  ਣਥ,
         <math.h>,   ࠢ  ᮮ饭: "undefined: _sin"
         ६ 樨.

:        ⮬,  騪 ⭠ ⥪,  ன
        ᮡ࠭ ⥬᪨ 㭪樨.  ਬ,  樮 ⥬
        UNIX  室  -lm  ᠬ   ப.
        . ⠪  12.14.

15.3	祬  몥      ⥯?

:	⮬     ⠪ .  ⮣
	, 稢 	䠩 <math.h>, ᯮ짮 㭪 pow(),
            楫 浪  㬭
        ।⥫쭥.

           : ANSI . 4.5.5.1 .

15.4	 㣫 ᫠?

:       ᠬ ⮩   ᯮᮡ:

		   (int)(x + 0.5)

          ⥫ ᥫ   .

15.5	  ᯥ樠쭮	祭 IEEE NaN  㣨 ᯥ樠
	祭?

:         ᮪⢥ ॠ樥 ⠭ IEEE
        権  饩 窮 ᯥ稢  (ਬ, 
        isnan())  ࠡ  ⠪ 祭ﬨ,  Numerical C Extensions
        Group (NCEG)  ⠭⨧樥 ⠪ ।.  ਬ஬
        㡮,  筮 䥪⨭ ᯮᮡ ஢ન  NaN 㦨 

		   #define isnan(x) ((x) != (x))

          騥  IEEE    ஢ 
         ⨬樨.

15.6      ஡  ஬ Turbo C. ணࠬ ਩
        蠥, 뤠  த "floating point formats not linked."

:         -,  Turbo C ( ⠪
            PDP-11),   প 権
         饩 窮,   ,    .
         ᮡ  ᠥ ᨩ printf  scanf,   
          砥 প %e, %f,  %g.  뢠 ⠪, 
        ᪮ 楤 Turbo C,  । - ᯮ
        ணࠬ 樨  饩 窮  , 뢠
        筮,  ணࠬ  譨 ࠧ 맢 㭪,
        ᯮ 樨  饩 窮, ⮡ ⠢ 
         প ⠪ 権.


        16. 䥩  樮 ⥬.


16.1	  	 	ᨬ,	   ப?

:      ४ ୮ 㡥   ,   ( 
        த⢥ , 易  㡫஢ ᨬ)  ⭮
          . । ᨬ  "" ணࠬ, ᠭ 
        , ⢫ 樮 ⥬,   
        ⠭⨧஢ 몮 .   ᨨ ⥪ curses
        ᮤঠ 㭪 cbreak(),    ࠧ ,  㦭.
        ᫨  ⠥  ஫    뢮  
        ࠭, ஡ getpass().  樮 ⥬ UNIX ᯮ
        ioctl  ᬥ ० ࠡ ࠩ ନ(CBREAK  RAW 
        "᪨" ᨩ; ICANON, c_cc[VMIN]  _[VTIME]  System V
         Posix).  ⥬ MS-DOS ᯮ getch().  ⥬ VMS
        ஡ 㭪樨 ࠢ ࠭ (SMG$)  curses, 
        ᯮ ஢  $QIO   IO$_READVBLK (,
         , IO$M_NOECHO)  ਥ  ᨬ  ࠧ.  㣨
        樮 ⥬ 稢 ᠬ.  ,   
        樮 ⥬ ᤥ   , ⠪ 
        ࠡ  ᨬ ⢫ ᯮ⥫묨 ࠬ 
         室  ஫ 業ࠫ쭮 .

        , ⢥     樮 ⥬,
        㬥  comp.lang.c. ⢥       FAQ
        ⠪ 㯯  comp.unix.questions  comp.os.msdos.programmer.
          ,  ⢥  ⫨   砥 ࠧ
        ਠ⮢   ⮩  樮 ⥬. ᫨  ᠥ
        ᯥ䨪 樮 ⥬, ,  ⢥, ਣ  襩
        ⥬,   ᯮ ᥬ ⠫.

           : PCS . 10 c. 128-9, . 10.1 c. 130-1.

16.2	 । -   ᨬ  ⥭ ( ᫨ ,  ᪮쪮?)
	 , 	ᤥ, ⮡ 믮 ணࠬ  ஢,
          ᨬ  ⥭?

:	⢥    ⠪ 楫   樮 ⥬.
	   curses 	㭪	nodelay().  ᨬ
	 樮	⥬	 ᬮ ᯮ짮	"騩 /
	뢮"  ⥬ 맮 "select" 	ioctl FIONREAD,	 kbhit(),
	 rdchk(),   O_NDELAY	㭪権	open()  fcntl().

16.3	  ࠭? 	뢮  ࠭ ⨢ ࠦ?

:	   ⨯ ନ ( ᯫ).  ᯮ짮
	⠪ ⥪  termcap  curses,  - 㣨
        㭪樨, ਣ   樮 ⥬.

16.4     㧭 ﭨ ?

:	ᬮ  ⥬ 㬥樨,   
	(।⥫쭮	ᬮॢ  FAQ)    㯯, 㦤
	। 樮 ⥬.    ᮢ襭 宦
         X window, MS-DOS, Macintosh, , ,   㣮
        樮 ⥬.

16.5     ணࠬ  ।    ,  ண 
        뫠 맢?

:	argv[0]	 ᮤঠ	 ,    祣	 ᮤঠ.
        ᫨  䠩  argv[0] ,  ଠ  , 
        ७  ᪠ ᯮ 䠩, ᯮ㥬
        ஬  몠. ࠭஢  
        襭, ,  .

16.6        ६ 㦥 த⥫᪮
        ?

:       饬, .  樮 ⥬ ᯥ稢 室 
        UNIX    /祭.   ணࠬ 
        짮  ᥡ  㦥,  ᫨ ,   -  
          樮 ⥬.

         ⥬ UNIX   ஢ ᢮ 㦥
        (  ⥬   ⮣ 㭪樨 setenv() / putenv())
         ஢ 㦥 筮 । ୨ ᠬ
         __ ࠭  த⥫᪨ .

16.7     ஢,   䠩?  室 訢
        짮⥫ । ⥬  ९뢠 騥 䠩.

:       UNIX- 樮 ⥬  ஡ 㭪
        access(),   - ஡. (ਬ access() 
	᪠  ᫥ ⢨, ஬ ⮣,	 ᮡ
        ᯮ  setuid-ணࠬ).  㣮 (, 襥) 襭
        - 맢 stat(), 㪠  䠩.  ⢥ 㭨ᠫ,
        ࠭騩 쭮 ᯮᮡ ⮨  ⪥  䠩.

16.8	 । ࠧ 䠩   ⥭?

:      ᫨ "ࠧ 䠩" -  ⢮ , ஥  ,
        ,  ,  ⢮ ࠭ ⭮.  樮
        ⥬ Unix 맮 㭪樨 stat   ⢥,  
        樮 ⥬ ন 宦 㭪,  
        ਡ⥫ ⢥.   c  fseek ६  
        䠩,  ⥬ 맢 ftell,  ⠪ ਥ  ( 
        ⢥ ⮫쪮  ⥬ Unix,  㣨   ⢥  祭
          । ⠭⮬ ANSI "" 䠩).
          ⥬  ணࠬ filesize  filelength.

	 , ⠪  㦭 ࠭  ࠧ 䠩? 	ᠬ 
        ᯮᮡ ।  ࠧ   ணࠬ 砥  ⨨ 
        ⥭.  ,   ணࠬ ⠪,  ࠧ 䠩
        㤥 祭   ⥭?

16.9	 㪮 䠩  㭨⮦  ९뢠?

:       ⥬ BSD  㭪 ftruncate(), ᪮쪮 㣨 ⥬
        ন chsize(),    (,
        㬥஢) ࠬ fcntl F_FREESP.  ⥬ MS-DOS 
         ᯮ짮 write(fd, "", 0).  ,  쭮
        襭  .

16.10    ॠ প  । ६ ॠ樨 짮⥫,
        ⮡ 譮 뫠  ᥪ㭤?

:	 ⮩  ,  ,	 襭. Unix	V7  
	ந  쬠  㭪 ftime() c 筮 
        ᥪ㭤,   祧  System V  Posix.  ⠪
        㭪樨: nap(), setitimer(), msleep(), usleep(), clock(), 
        gettimeofday().  맮 select()  poll() (᫨  㭪樨 㯭)
            ࢨ 㭪  ᮧ 
        থ.   ⥬ MS-DOS  ९ணࠬ஢ ⥬
        ⠩  뢠 ⠩.

16.11	  ꥪ	䠩  ।	ࠢ    
	㭪権?

:	室 ᪨ 騪 / 稪.  뤥
	   malloc	  ꥪ 䠩,  㦭 
          ଠ ꥪ 䠩, 䨪樨 ᮢ  .
         ⥬ BSD Unix  ᯮ짮 system()  ld -A 
        ᪮ . M (設⢮? ) ᨨ SunOS 
        System V  ⥪ -ldl,  ᪨ 㦠
        ꥪ 㫨.    GNU ,  뢠 "dld".
        . ⠪  7.6.

16.12	 믮  ணࠬ  樮	⥬?

:	ᯮ system().

         : K&R II . B6 c. 253; ANSI . 4.10.4.5; H&S
         . 21.2; PCS . 11 c. 179;

16.13	 墠	, 	뤠  樮 ⥬?

:	Unix   㣨	樮 ⥬  㭪 popen(),
		७砥 ⮪ stdio , 易  ᮬ,
        ⨢訬 ,    室  (
        । 室).    (.  16.12) ७ࠢ
        室   䠩, ⥬    .

          : PCS . 11 c. 169 .

16.14	  ᮤন	४   ணࠬ?

:	᭨,   ᯮ짮 㭪樨 opendir()  readdir(),
	㯭  設⢥	⥬ Unix. 樨  㭪権 
	 MS-DOS, VMS	 㣨 ⥬. (MS-DOS  ⠪ 㭪樨
        findfirst  findnext,    筮   ᠬ).

16.15	 ࠡ  ᫥⥫묨 (COM) ⠬?

:	   樮 ⥬.  ⥬ Unix 筮
        ⢫ 樨 , ⥭    譥
        ன⢮  ᯮ  ନ쭮 ࠩ 
        ன ࠪ⨪.  ⥬ MS-DOS   ᯮ짮
        뢠 BIOSa,  (᫨ ॡ ਫ筠 ᪮)  
        ࠢ塞 뢠ﬨ ⮢  ࠡ  ᫥⥫묨
        ⠬.

	17. .


17.1	   㢥७ ᪠  砫 祭 ६,
          ࠧ  樠஢? ᫨  ६
         㫥 砫쭮 祭,  ࠢ쭮  㫥 祭
        ᢠ 㪠⥫  ६  饩 窮?

:	"C᪨" ६ (    㭪権  ,	
          ਭ騥  sttic) ᥣ 樠
	(אַ   ணࠬ) 㫥, 	 ணࠬ ᠫ
	"=0". , ६  樠஢	 㫥 㪠⥫
	(ᮮ⢥饣 ⨯;	. ࠧ 1), ᫨ 	 㪠⥫ﬨ,
         祭ﬨ 0.0, ᫨ 뫨  ६  饩 窮.

	६ ⮬᪮  (..	 ६ 
	ᯥ䨪樨 static), ᫨    ।, ࢮ砫쭮
        ᮤঠ "".   ।᪠ ⭮⥫쭮 
        ᤥ .

	,	᪨ 뤥塞   malloc	 realloc ⠪
	㤥 ᮤঠ	 	  樠஢, ᫨ 
        室, 뢠饩 ணࠬ. , 뤥  
        calloc,   ,   ᥣ   㪠⥫ 
        ६  饩 窮 (.  3.13  ࠧ 1).

17.2	 ⥪ 	אַ  ,	   .

		  f()
		  {
		  char a[] = "Hello, world!";
		  }

:	,   ᮧ	 ਭ ⠭ ANSI 
          ন 樠 "⮬᪨ ॣ⮢"
	(  ᪨  ᨢ  ).

	⮡   ⮩ 樨, ᤥ ᨢ ᪨	
        ,  樠    strcpy, 
        뢠 f(). (ᥣ  樠஢ ⮬
        ६ char * ਭ ,  .  17.20). . ⠪
         5.16, 5.17.

17.3        䠩, ⮡   뫮   設
	 㣨 ࠧ஬ ᫮, 浪 ⮢  㣨 ଠ⮬ ᥫ
	 饩 窮?

:	襥 襭 - ᯮ짮 ⥪⮢	䠩 (筮 ASCII),
	c 묨, ᠭ묨 fprintf.	   ᥣ 
		fscanf  祣- . ( 	ᮢ ਬ
	 ⥢ ⮪).  , 	⥪⮢ 䠩	᫨誮
            ࠡ뢠, ⭮ ᪥᪨.
	 ⮣,  䥪⨢ ⠪ 権    ࠪ⨪
        ਥ, ᯮᮡ 㫨஢ 묨   ⠭
	।	  饥 祭.

	᫨ 室	ᯮ짮  ଠ, ७ᨬ 
          (  룮  ᯮ짮 ⮢
        ⥪ /뢮), ᫨ ᯮ짮 ⠭ ଠ ,
        ⠪  XDR (RFC 1014) (Sun), ASN.1(OSI), X.409 (CCITT),  ISO
        8825 "᭮ ࠢ ஢" . ⠪  9.11.

17.4	 ⠢  㤠 ப	( )  ।	䠩?

:      ਤ, , ९ 䠩. .  16.9.

17.5	   㭪樨 ᪮쪮 祭?

:	 । 㪠⥫	  , ஥ 㤥  㭪樥,
	  㭪 頥 ,	ᮤঠ  祭,
         㬠   ६ (᫨  ). . ⠪
         2.17, 3.4,  9.2.

17.6	᫨  㪠⥫ (char *) 	 㭪樨   ਭ,  
	 㭪 맢?

:	 אַ  - ᮧ ⠡   ᮮ⢥
	 㪠⥫:

		  int function1(), function2();

		  struct {char *name; int (*funcptr)();	} symtab[] =
			  {
			  "function1",	  function1,
			  "function2",	  function2,
			  };

	  ⥯ 㦭 ᪠  ⠡ 㦭 	 맢 㭪,
	ᯮ 易   㪠⥫.	. ⠪  9.9 	16.11.

17.7	 ,	,   䠩 <sgtty.h>.	諨  ,
	.

:      ⠭  䠩   ⮬ ᫥,  ᮤঠ
        ଠ, 室 , 樮 ⥬ 
        .  "㦮"  䠩   ⮣,   
        筮 㦥.   த , 祬
          䠩,   ᫠  
        ﭭ.

17.8	 맢 楤, ᠭ  몥 FORTRAN (C++,BASIC,Pascal,
	Ada, Lisp)  	( ).

:	⢥ 		 設   ᯥ䨪 । ࠬ஢
	ࠧ묨 ࠬ. 襭    .	⥫쭮
	⠩	㪮⢮  .   㬥樨 
	"㪮⢮ 	ᬥ蠭 ணࠬ஢",  孨 ।
        㬥⮢  ᯥ祭 ࠢ쭮 室  㭪  쬠
        ⠨⢥. ⥫쭠 ଠ 室  䠩 FORT.gz
         , (Glenn Geers)      ftp
        suphys.physics.su.oz.au  ४ਨ src.

	 䠩 cfortran.h 頥 ⢨ C/FORTRAN  
	 設. cfortran.h   १ ftp
	zebra.desy.de (131.169.2.244).

	 C++ 䨪 "C" 譥 㭪樨 뢠,  㭪 㤥
	뢠  ᯮ짮 ᮣ襭  । ࠬ஢ 몠
	.

17.9    -   ணࠬ, ॢ Pascal  FORTRAN
        ( LISP, Ada, awk, "" )  ?

:	 ᪮쪮 饤㯭 ணࠬ:

	p2c	ॢ稪  ᪠ 	, ᠭ   ᯨ,
                (Dave Gillespie) 饭  comp.sources.unix   1990
                (Volume 21); 㯥 ⠪ १ ftp csvax.cs.caltech.edu,
                䠩 pub/p2c-1.20.tar.Z .

	ptoc	㣮 ॢ稪  ᪠  , ᠭ  ᪠
		(comp.sources.unix, Volume 10, ࠢ	 vol. 13?)

	f2c	ॢ稪  ࠭   ᮢ⭮ ࠧࠡ⠭
		Bell Labs, Bellcore, and Carnegie Mellon. ஡
		 ,	᫠ ஭ ⮩ ᮮ饭
		"send index from f2c"  	 netlib@research.att.com
		 research!netlib.
		( ஡  	 १	ftp
		netlib.att.com,	 ४ਨ netlib/f2c.)

        ⠢⥫ ⮣ ᯨ᪠ ᮢ  ⢥⮢  ᯨ᮪ 㣨
        ᪨ ࠭஢, ।  ࠭   
        몮.  . ⠪  5.3.

17.10	ࠢ ,  C++ - ⢮ .   ᯮ짮
	 C++  ࠭樨 C	ணࠬ?

:	++      让 ⥯   ,  
	ࠢ 樨  ⨬  C++. (  ணࠬ,
        , ⥬  , ࠢ쭮 ࠭᫨஢ ஬ ++).

17.11	 㦥:		      :  ணࠬ,	
					 뢠 (. ⠪  17.12)


         ४          cflow, calls, cscope
        뫮 

        C ଠ⨧                  cb, indent


17.12	    饤㯭	ணࠬ?

:	᫨   	  Usenet, ᬮ ਮ᪨ 頥
	ᮮ饭   comp.sources.unix  comp.sources.misc,  뢠
	 ⠫  娢  ᪠뢠,   
	  䠩.	筮 ᯮ ftp	/ uucp c 業ࠫ,
	ਥ஢	 짮⥫ ࢥ஬, ⠪  uunet
        (ftp.uu.net, 192.48.96.9). ,     ⢥
         ᫥   ᫨  娢 ࢥ 
        ᪠  㯥  .

	  (Ajay Shah) ন ᯨ᮪ 饤㯭 ணࠬ 
		᫥ ,  ਮ᪨ 㡫,
	    ⠬ ,  	   ⢥	(.
         17.33). 㯯 Usenet comp.archives ᮤন ᫥
          ⮬,  㯭  ࠧ ftp. ⮢ ࢥ
	"archie"  ᪠,   ftp		   ணࠬ.
        諨 ⮢ ᮮ饭 "help"  
        archie@quiche.cs.mcgill.ca  祭 쭥 権.
        , 㯯 comp.sources.wanted - 筮 ᠬ 室饥 ,
           ᮮ⢥騩 ,  ᬮ ० __
        ᯨ᮪ ᮢ  ⢥⮢ (FAQ) "  筨".

17.13	  ᫥騥	ॢ 	⭮ 
	ணࠬ஢ (International	Obfuscated C Code Contest - IOCCC)?
	  ணࠬ,	訥  ⥪饬   ?

:      ॢ 筮 室  砫   । . 
        祭 ࠢ  ४権,    ,
        諨 ஭ ⮩ 쬮  :

		{apple,pyramid,sun,uunet}!hoptoad!judges  
		judges@toad.com

	, ࠧ Subject ண  "send rules".
	  ,   __ , 㤠	㦭 뫠 
	ணࠬ.

        ⥫  ᭠砫   ⭥ ७樨
        Usenix (Summer Usenix Conference)  ।   ⠭
	㯭묨   -  -. ணࠬ-⥫
		ᮢ (稭  1984 .) 娢஢  uunet (.
	 17.12) 	४ਨ ~/pub/ioccc.

	 ࠩ 砥 ணࠬ-⥫  ᮢ	
	, ᫠  㪠   쬮   Subject
	ண 㦭 㪠:	"send YEAR winners",  YEAR -	,
	।⠢ 	ࠬ, ࢠ  ᪮쪮   "all".

17.14	祬 ⨬  ਨ?  ਪ
	"몫" ࠣ ணࠬ,	 ஬ 㦥  ਨ?
	  ᯮ짮 ਨ  ਭ ⠭?

:	 ਨ ਭ  ।, 祬 , 
	ࠧ	-  砩   ਩, ⠢
	  ᨬ "/*".  ⮩ 稭 	"몫" 让
	ࠣ ணࠬ,  ஬ 㦥  ਨ,   ।
	९ #ifdef  #if 0 (    	5.11).

	᫥⥫쭮 ᨬ /*  */   ᯥ樠쭮 祭
	 祭   窨 ਭ.  ᫥⥫쭮
	 ᬠਢ  ਩, ᪮ ணࠬ	(ᮡ
	,  ᮧ ⥪ 㣮  ணࠬ)  
	 	ਨ .

         : ANSI Appendix E p. 198, Rationale . 3.1.9 p. 33.

17.15	  祭  ASCII ⮩   , 	?

:	   ।⠢	楫묨 ᫠,	ᮮ⢥騬  祭.
	( ᮮ⢥⢨	 ஬ ᨬ  設).   
	室 	८ࠧ:	᫨ ⭠ ,  ⭮
	  祭.

17.16	 ॠ	᫥⥫쭮 / ᨢ ?

:	ᯮ ᨢ ६ ⨯ char  int  ᪮쪮
	ᮢ  権 	⤥묨 ⠬ (ᯮ ।
	8  CHAR_BIT,	᫨   䠩 <limits.h>:

	   #include <limits.h>		   /*  CHAR_BIT */

	   #define BITMASK(bit)	(1 << ((bit) % CHAR_BIT))
	   #define BITSLOT(bit)	((bit) / CHAR_BIT)
	   #define BITSET(ary, bit) ((ary)[BITSLOT(bit)] |= BITMASK(bit))
	   #define BITTEST(ary,	bit) ((ary)[BITSLOT(bit)] & BITMASK(bit))

17.17	 訬 ࠧ । ᫮ ⠭ ,
	ᮮ⢥	। 祭?

:	襭	⮩   㣨 ஡ 		⮢祭 
	᪮  ᤥ  䥪⨢   ⠡ ४஢.
	(    ᫥騩 ).

17.18     䥪⨢ ࠡ ணࠬ?

:	 䥪⨢, 祭 	ࠣ 	comp.lang.c,
	 ⠪   	᪫	㬠.		  
	設⢥ ணࠬ 	  ६	ᯮ. ᫨ ६,
	 - ⪮ , 	 ࠢ  騬
	६ ᯮ, 	 ⮣ ⪠ ࠧ  
	 쭮, 祬 䥪⨢. (, 	 祭,
	祭    "䥪⨢" ⮪   믮
          প).

	砫쭮  ⪨ ।᪠ "稥 窨" ணࠬ.
	 䥪⨢ ணࠬ  祭,  ᯮ짮
	䨫஢騪  ।  ⪮ ணࠬ, 
	㦨 .  ᭮ ६ 믮 頥
	਩묨 ﬨ, ⠪  /뢮	 뤥 ,
          ᪮   ਧ樨  ஢.

	  ⪮ ணࠬ,   ᫥ 䥪⨢,
	   室騩 ; "ம⨬"
	⮣ ⪠  .  	। "ਥ 
	㢥祭 䥪⨢" (த 	樨 ᤢ	㬭
	 ⥯ ) 믮 ⮬᪨  ७묨
	ࠬ.

	㪫 ⪨ ⨬樨 ᯮᮡ ⠪ 㢥 ࠧ
	ணࠬ,   䥪⨢	㯠.

        쭥襥 㦤 ⨢稩, 易  䥪⨢,  ⠪
         訥 ᮢ  㢥祭 䥪⨢,   ,
        ᬮ   7  ୨   " ⨫
        ணࠬ஢",  ⠪    ⫨ "ᠭ
        䥪⨢ ணࠬ".

17.19	ࠢ ,  ਬ 㪠⥫  䥪⨢, 祬
	ਬ ᨢ? ᪮쪮  ணࠬ 맮 㭪樨?
        ॥  ++i 祬 i = i + 1?

:	 ⢥     㣨 宦 , 筮 ,
		  	ਬ塞 . ᫨  
	室, ਤ ⭮ । ६	믮 ⮢
        ணࠬ. ( ࠧ ⮫ ⥫,  ॡ ⭨
         ७, ⮡  㢨. ᫨  ,
        ᬮ ᥬ ⨭, 뤠 ஬, ⮡
        㡥  ࠧ筮 ࠭樨  ⥭  ࢥ⢮
        ୠ⨢).

	"筮" ॥ த  訬 ᨢ  
	㪠⥫, 祬	  ᮢ,  	, 
		ࠢ ⭮.

	 맮 㭪権  㢥稢 ६	믮, ᠬ 㭪樨
        ⮫쪮  쭮    ணࠬ,
              ⪠뢠.

	० 祬 ९뢠	ࠦ ⨯ i=i+1, ᯮ,  
	  ஬  	  ணࠬ㥬 ஬. 
	ਫ  㤥  ࠭᫨஢ ++i,i+=1; i=i+1.
        ᯮ짮 ++i, i+=1  i=i+1 -  ⨫,  䥪⨢.
	(. ⠪  4.7).

17.20	祬  믮 ⠪ ࠣ?

                char *p = "Hello, world!";
		p[0] = tolower(p[0]);

:	ਭ ⠭ 	ᥣ  ஢, 	᪫祭
	,	  樠 ᨢ. ஡

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

        ( 樨  ணࠬ    ,
		ࠢ  䨪樨 ਭ ⠭.)
	. ⠪  2.1,2.2, 2.8  17.2.

        : ANSI . 3.1.4 .


17.21    ணࠬ ਩ 蠥   믮! (᫨
        ᯮ짮 ⫠稪,  ,  ᬥ 㯠  
        믮 ࢮ 樨  main).

:	,	    ᪮쪮 祭  ( )
	 ᨢ.   ⥬ ࠧ ⥪ 䨪஢,
         樮 ⥬,   ⢫ ᪮
        뤥 ⥪ , (ਬ, UNIX)    
        㦤,  ࠧ ⥪  १ 㢥稢.

         ।⥫쭥  訥 ᨢ ⨯ static(᫨,
	筮, 	ࠧ 	४ᨢ 맮  ॡ	ᢥ
	ᨢ).

	(. ⠪  9.4).

17.22	  ᮮ饭 "Segmentation violation"	 "Bus error" ?

:	 , 	ணࠬ ⠥    饩
	 饭	 		.	 ﭭ ந室
        - 樠஢  ୮ 樠஢ 㪠⥫
        (.  3.1, 3.2),   malloc (.  17.23) , 
        , scanf (.  11.3).

17.23	 ணࠬ ਩ 蠥, 祢,  믮 malloc,
	  	   祣 宣.

:	 , 祭  ࠧ ७ 	,
	ᮧ malloc,  騥 ஡   㤭 
        ⫠.  ᥣ ஡   ⪥  
	,	祬  㬥  , 뤥 malloc; ᮡ
	࠭ 訡 malloc(strlen(s))	 strlen(s) + 1.
	㣨 ஡	 ᢮ 㪠⥫, 祭 
	 १ 믮	malloc,	 ⪨ ਬ 㭪
	realloc	 㫥 㪠⥫. (.  3.12).

	 ᪮쪮 ⫠	⮢, ⮡  ᫥
	騥 	ਬ malloc ஡.    -
        "dbmalloc"  . 娫, (Conor P. Cahill) 饭 
        comp.sources.misc  ᥭ 1992. 㣨 -  "leak" 饭 
        ⮬ 27 娢 comp.sources.unix, JMalloc.c  JMalloc.h  ᡮਪ
        Fidonet Snippets (   archie; . ⠪  17.2); 
        MEMDEBUG - . ftp.crpht.lu  pub/sources/memdebug .
        . ⠪  17.12.

17.24	  -  ⮢   ?

:        (Plum Hall) (࠭ ࠡ⠢訩  न,  , ⥯
        ) த ⠪ . ਡ⨢ GNU C (gcc)  FSF
        砥 c-torture-test.tar.Z    ஡,
        騥  ᯮ짮 ஢.   (Kahan) 
         paranoia,  室  ४ਨ netlib/paranoia 
        netlib.att.com ⥭ᨢ  樨  饩 窮.

17.25	  ࠬ⨪   ணࠬ YACC?

:	  - 筮  ࠬ⨪  ⠭ ANSI. 㣠
        ࠬ⨪, ⮢  ᪨ (Jim Roskind), 室
         ics.uci.edu  ४ਨ pub/*grammar*.    ,
        ࠡ騩 ࠧ ANSI ࠬ⨪ (ਭ騩  (Jeff Lee))
        室  uunet (.  17.12)  ४ਨ
        usenet/net.sources/ansi.c.grammar.Z (  ᪨
        ஬).   GNU C  FSF  ࠬ⨪, ⠪  
           ਫ   K&R II.

          : ANSI . A.2 .

17.26	 室 室 ⥪  ࠧ  ᫥ .

:        㯭  -  "defunc" , 饭  comp.source.misc
	  1993 . (V41 i32,33),	 alt.sources 	ﭢ 1994 .,
	   १ ftp sunsite.unc.edu  ४ਨ
	pub/packages/development/libraries/defunc-1.3.tar.Z; 
	 "parse" 	lamont.ldgo.columbia.edu.

17.27	 室 㭪 ⨯ strcmp,   ਡ⥫쭮
	ࠢ, ⮡ ஢  ப  ,   
	⮦⢮.

:	筮 ⠪ ࠢ 	 "soundex", 
        ⠢  ᮮ⢥⢨ 室 騬 ᫮     ᫮
        .    ᠭ  ⮬ "஢  " ᪮
         줠  "⢮ ணࠬ஢  ".

17.28	     ?

:	ᯮ mktime (.		12.6  12.7)  ᮮ⭮襭
         (Zeller),  ஡   㭪, 饭 娪
         (Tomohiko Sakamoto):

	  dayofweek(y, m, d)	  /* 0 = ᥭ */
          int y, m, d;            /* 1 <= m <= 12,  y > 1752 (ਬ୮) */
	  {
	       static int t[] =	{0, 3, 2, 5, 0,	3, 5, 1, 4, 6, 2, 4};
	       y -= m <	3;
	       return (y + y/4 - y/100 + y/400 + t[m-1]	+ d) % 7;
	  }

17.29	2000-  㤥 ᮪? ( %4 ==0) -  ࠢ	 
	᮪ ?

:         ᮮ⢥⢥.     ਣਠ᪮
	:

		 year %	4 == 0 && (year	% 100 != 0 || year % 400 == 0)


17.30	 ந	"char"?

:	祢 ᫮  "char"	 ந ६ ᯮᮡ:
         ᪨ ᫮ "char," "care," or "car;". 롮  .

17.31	  訥   祭 ?

:	  (Mitch Wright) ন ஢ 
	 	   UNIX;  㯭 १	ftp ftp.rahul.net  
	४ਨ pub/mitch/YABL.

17.32	   	  १ ୥?

:	,  ࠩ ,	:

	 "Notes	for C programmers,"  ⥫,
         (Christopher Sawtell) 㯭 १
	 svr-ftp.eng.cam.ac.uk:misc/sawtell_C.shar
	 garbo.uwasa.fi:/pc/c-lang/c-lesson.zip
	 paris7.jussieu.fr:/contributions/docs

         "C for Programmers,"   (Tim Love)
	 㯭 १
	 svr-ftp.eng.cam.ac.uk	 ४ਨ misc.

17.33     㣨 ਠ  ᮢ  ⢥⮢? 㯭
          ࠭ ।樨?

:        . 筮    ⢥  
        comp.lang.c ࢮ ᫠  ,  祭  Expires,
        騬 ⢮  comp.lang.c  .  
         ᮪饭 , ।⠢ ᮡ ᯨ᮪ ,
        ᮯ஢騩 ⢥  .  ᯨ᪨ 
        ⠪    comp.answers  news.answers. ᪮쪮 ࢥ஢ 
        娢 ᮮ饭, 頥  news.answers,  ⠪ ᯨ᪮ 
         ᮢ (FAQ),   .   ࢥ
        rtfm.mit.edu (४ਨ pub/usenet/news.answers/C-faq/ 
        pub/usenet/comp.lang.c/ )  ftp.uu.net (४਩
        usenet/news.answers/C-faq/ ).  ࢥ archie   
        㣨 娢; ᤥ   "prog C-faq". ⥫
        ଠ    ᯨ᪥ meta-FAQ  news.answers; . ⠪
         17.12.

         㬥 - ﭭ 騩 ᯨ᮪ ᮢ, 
           ६  २,   
        ᮢ,  뫨   ⮬ . ।騥 ᨨ
        ⮣ 㬥 ५,     祣 ᭮ 
        ᪫祭 砩 䮣᪨ 訡,    ᨨ
        㦥 .




ANSI	American National Standard for Information Systems --
        Programming Language -- C, ANSI X3.159-1989 (.  5.2).

JLB	Jon Louis Bentley, Writing Efficient Programs, Prentice-Hall,
	1982, ISBN 0-13-970244-X.

H&S	Samuel P. Harbison and Guy L. Steele, C: A Reference Manual,
        Second Edition, Prentice-Hall, 1987, ISBN 0-13-109802-0.
        (᪮   .)

PCS	Mark R. Horton, Portable C Software, Prentice Hall, 1990,
	ISBN 0-13-868050-7.

EoPS	Brian W. Kernighan and P.J. Plauger, The Elements of Programming
	Style, Second Edition, McGraw-Hill, 1978, ISBN 0-07-034207-5.
        ᪨ ॢ: .୨,. " ⨫
        ணࠬ஢",   , 1984, 160 .

K&R I   Brian W. Kernighan and Dennis M. Ritchie, The C Programming
	Language, Prentice-Hall, 1978, ISBN 0-13-110163-3.
        ᪨ ॢ: ୨ .,  . " ணࠬ஢
        ", .:   ⨪,1985.

K&R II  Brian W. Kernighan and Dennis M. Ritchie, The C Programming
	Language, Second Edition, Prentice Hall, 1988, ISBN 0-13-
	110362-8, 0-13-110370-9.
        ᪨ ॢ:.୨, . " ணࠬ஢ ",
        .:   ⨪, 1992.

Knuth   Donald E. Knuth, The Art of Computer Programming, (3 vols.),
	Addison-Wesley, 1981.
        ᪨ ॢ: . "⢮ ணࠬ஢  ",
        .1 ᭮  (.:,1976),.2 ᫥ 
        (.:,1977), .3 "஢  ", (.:, 1978)


CT&P    Andrew Koenig, C Traps and Pitfalls, Addison-Wesley, 1989,
	ISBN 0-201-17928-8.

	P.J. Plauger, The Standard C Library, Prentice Hall, 1992,
	ISBN 0-13-131509-9.

	Harry Rabinowitz and Chaim Schaap, Portable C, Prentice-Hall,
	1990, ISBN 0-13-685967-4.

 ஡     ࠡ⠭ 㪮⢥
 ⨫ Indian Hill (.  14.3,  ⠪  17.31).

୮

ᨡ ᫥騬 :
Jamshid Afshar, Sudheer Apte, Randall Atkinson, Dan Bernstein,
Vincent Broman, Stan Brown, Joe Buehler, Gordon Burditt, Burkhard Burow,
Conor P. Cahill, D'Arcy J.M. Cain, Christopher Calabrese, Ian Cargill,
Paul Carter, Billy Chambless, Raymond Chen, Jonathan Coxhead, Lee
Crawford, Steve Dahmer, Andrew Daviel, James Davies, Jutta Degener, Norm
Diamond, Jeff Dunlop, Ray Dunn, Stephen M. Dunn, Michael J. Eager, Dave
Eisen, Bjorn Engsig, Chris Flatters, Rod Flores, Alexander Forst, Jeff
Francis, Dave Gillespie, Samuel Goldstein, Alasdair Grant, Ron
Guilmette, Doug Gwyn, Tony Hansen, Joe Harrington, Guy Harris, Elliotte
Rusty Harold, Jos Horsmeier, Blair Houghton, Ke Jin, Kirk Johnson, Larry
Jones, Kin-ichi Kitano, Peter Klausler, Andrew Koenig, Tom Koenig, Ajoy
Krishnan T, Markus Kuhn, John Lauro, Felix Lee, Mike Lee, Timothy J.
Lee, Tony Lee, Don Libes, Christopher Lott, Tim Love, Tim McDaniel,
Stuart MacMartin, John R. MacMillan, Bob Makowski, Evan Manning, Barry
Margolin, George Matas, Brad Mears, Bill Mitchell, Mark Moraes, Darren
Morby, Ken Nakata, Landon Curt Noll, David O'Brien, Richard A. O'Keefe,
Hans Olsson, Philip (lijnzaad@embl-heidelberg.de), Andrew Phillips,
Christopher Phillips, Francois Pinard, Dan Pop, Kevin D. Quitt, Pat
Rankin, J. M. Rosenstock, Erkki Ruohtula, Tomohiko Sakamoto, Rich Salz,
Chip Salzenberg, Paul Sand, DaviD W. Sanderson, Christopher Sawtell,
Paul Schlyter, Doug Schmidt, Rene Schmit, Russell Schulz, Patricia
Shanahan, Peter da Silva, Joshua Simons, Henry Spencer, David Spuler,
Melanie Summit, Erik Talvola, Clarke Thatcher, Wayne Throop, Chris
Torek, Andrew Tucker, Goran Uddeborg, Rodrigo Vanegas, Jim Van Zandt,
Wietse Venema, Ed Vielmetti, Larry Virden, Chris Volpe, Mark Warren,
Larry Weiss, Freek Wiedijk, Lars Wirzenius, Dave Wolverton, Mitch
Wright, Conway Yee,  Zhuo Zang,        
㬥.

⤥쭮   ૠ  (Karl Heuer)   ᮡ
ઠ । (Mark Brader), ,  ᫮ ⨢ ᮭ,
(Steve Johnson) " ⭮ ६   㬥
㢮   ⮫쪮  ।  ,    ।
 ⥩".


                            ⨢  (Steve Summit)
                            scs@eskimo.com

᪨ ࠢ   㬥 ਭ ⨢  (Steve Summit),
1988, 1990-1995. 㬥  ᢮ ࠭   
     ப.  뢪  ணࠬ  ⮬ 㬥
(vstrcat(), error(),  ..) ⭮  饤㯭   ᯮ짮
 ࠭祭.



                                   

     ⤥ ࠣ "ᮢ  ⢥⮢   "  砫
ॢ " ᥡ",   ࠡ ⠢  ॢ 
㬥  砫  .
     , 筮-, , ⮡    ⢥ ᠬ⥫쭮
த ᢮   ᪮ 몥. 뫠 ᢮ 砭, 
( ,    ⢥?)  :


                             603074, .த, . த 38-443,
                             㯭 ᠭ ᮢ.
                             E:mail: krupnik@sci-nnov.ru

    P.S.   , -      ?
