16-4-³ª.µðÆúÆ® Àμö ÀÛ¼º¹ý

µðÆúÆ® Àμö´Â ¸î °¡Áö ÁÖÀÇ »çÇ׸¸ ¾Ë¾ÆµÎ¸é ±²ÀåÈ÷ »ç¿ëÇϱ⠽±´Ù. ¸ÕÀú ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¶§ÀÇ ÁÖÀÇÁ¡ºÎÅÍ ¾Ë¾Æº¸ÀÚ.

µðÆúÆ® Àμö´Â ÇÔ¼öÀÇ ¿øÇü¿¡¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç Á¤ÀǺο¡¼­´Â Áߺ¹ ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. ¿øÇü ¼±¾ð¾øÀÌ Á¤ÀǺθ¸ ÀÖ´Ù¸é Á¤ÀǺο¡ µðÆúÆ® Àμö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ¿øÇü°ú Á¤ÀǺΰ¡ µ¿½Ã¿¡ Á¸ÀçÇÏ´Â ÀϹÝÀûÀÎ °æ¿ì¿¡´Â ¿øÇü ¼±¾ð¿¡¸¸ µðÆúÆ® Àμö°¡ ÀÖ¾î¾ß ÇÑ´Ù. ¿øÇü¿¡¼­ ±âº»°ªÀ» Á¤ÀÇÇÏ°í Á¤ÀǺο¡ ¶Ç ±âº»°ªÀ» ÁöÁ¤Çϸé Áߺ¹ Á¤ÀÇ ¿¡·¯·Î 󸮵Ǵµ¥ ÀÌ´Â ºÒÀÏÄ¡·Î ÀÎÇÑ ¸ðÈ£ÇÔÀ» Á¦°ÅÇϱâ À§ÇÑ ±ÔÄ¢ÀÌ´Ù. Á¤ÀǺο¡´Â Àμö ¸ñ·Ï¸¸ ³²°Ü µÎ°Å³ª ±âº»°ªÀ» ²À ¸í½ÃÇÏ°í ½Í´Ù¸é ¿¹Á¦¿¡¼­Ã³·³ ±âº»°ªÀ» /* */ ÁÖ¼®À¸·Î ¹­¾î¾ß ÇÑ´Ù. ÀÌ ÁÖ¼®Àº ¿øÇüÀ» º¸Áö ¾Ê°íµµ °³¹ßÀÚ°¡ ÀμöÀÇ ±âº»°ªÀ» ½±°Ô ÆľÇÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù.

µðÆúÆ® Àμö´Â ¿À¸¥ÂʺÎÅÍ ¼ø¼­´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç °¡¿îµ¥ ÀμöµéÀº ±âº»°ªÀ» ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

 

void OutChar(int x, int y=5, char c='-',int n=10);                   // °¡´É

void OutChar(int x, int y=5, char c,int n=10);                        // ºÒ°¡´É

void OutChar(int x=0, int y=0, char c='-',int n=10);           // °¡´É

void OutChar(int x=0, int y=0, char c,int n);                     // ºÒ°¡´É

void OutChar(char c,int n,int x=0, int y=0);                      // °¡´É

 

µÎ ¹ø° ¿¹´Â y¿¡ ±âº»°ªÀÌ ÁöÁ¤µÇ¾î ÀÖÁö¸¸ c¿¡ ±âº»°ªÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î ºÒ°¡´ÉÇÏ´Ù. y°¡ ±âº»°ªÀ» °¡Áö·Á¸é ù ¹ø° ¿¹Ã³·³ ±× ¿À¸¥ÂÊ¿¡ ÀÖ´Â cµµ ±âº»°ªÀ» °¡Á®¾ß ÇÑ´Ù. ¸ðµç ÀμöµéÀÌ ±âº»°ªÀ» °¡Áö´Â °ÍÀº °¡´ÉÇÏÁö¸¸ ³× ¹ø°ó·³ ¾ÕÂÊ µÎ Àμö¸¸ ±âº»°ªÀ» °¡Áú ¼ö´Â ¾ø´Ù. ¸¸¾à ÀÌ·± Çü½ÄÀÌ ²À ÇÊ¿äÇÏ´Ù¸é ¸¶Áö¸· ¿¹Ã³·³ ±âº»°ªÀ» °¡Áö´Â Àμö¸¦ µÚÂÊÀ¸·Î À̵¿½ÃÄÑ¾ß ÇÑ´Ù.

µðÆúÆ® Àμö¸¦ °¡Áö´Â ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§µµ ºñ½ÁÇÑ ±ÔÄ¢ÀÌ Àû¿ëµÈ´Ù. ±âº» ÀμöµéÀº ¿À¸¥ÂʺÎÅÍ ¼ø¼­´ë·Î »ý·«ÇÒ ¼ö ÀÖÀ¸¸ç Áß°£¿¡ ÇÑ Àμö¸¸ »ý·«ÇÒ ¼ö´Â ¾ø´Ù.

 

OutChar(1,2);                            // °¡´É

OutChar(1,2,'$');                        // °¡´É

OutChar(1,2,,5);                    // ºÒ°¡´É

OutChar(1,2,'-',5);                     // °¡´É

 

¾ÕÂÊ µÎ Àμö´Â ±âº»°ªÀÌ ÁÖ¾îÁ® ÀÖÁö ¾ÊÀ¸¹Ç·Î ¹«Á¶°Ç Àü´ÞÇØ¾ß ÇÑ´Ù. ¼¼ ¹ø°, ³× ¹ø° Àμö c,nÀº »ý·«ÇÒ ¼ö ÀÖµÇ ¿À¸¥ÂÊ¿¡¼­ºÎÅÍ ¼ø¼­´ë·Î »ý·«ÇØ¾ß ÇÑ´Ù. c, nÀ» ¸ðµÎ »ý·«Çϰųª n¸¸ »ý·«ÇÏ´Â °ÍÀº °¡´ÉÇÏÁö¸¸ Áß°£ÀÇ c¸¸ »ý·«ÇÒ ¼ö´Â ¾ø´Ù. ¸¸¾à cÀÇ ±âº»°ª '-'¸¦ »ç¿ëÇϸ鼭 nÀÇ °ªÀ» ÁöÁ¤ÇÏ°í ½Í´Ù¸é c ÀÚ¸®¿¡ ±âº»°ª°ú °°Àº °ªÀ» Áָ鼭 nÀ» ¸í½ÃÇØ¾ß ÇÑ´Ù.

Âü°í·Î ´ÙÀ½ µÎ °¡Áö »çÇ׿¡ ´ëÇؼ­µµ ¾Ë¾Æ µÎÀÚ. ÇÔ¼ö ¿øÇü ¼±¾ð¿¡¼­ Çü½Ä ÀμöÀÇ À̸§Àº º°´Ù¸¥ Àǹ̰¡ ¾øÀ¸¹Ç·Î Àμö À̸§À» »ý·«ÇÑ Ã¤·Î ±âº»°ªÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù.

 

void OutChar(int, int, char='-',int=10);

void (*pf)(int,int,char='-',int=10);

 

char='-', int=10 À̶ó´Â Ç¥ÇöÀÌ Á» ¾î»öÇØ º¸ÀÌÁö¸¸ ÀÌ ÀμöÀÇ Å¸ÀÔÀÌ charÇüÀÌ°í ±âº»°ªÀÌ '-'¶ó´Â °ÍÀ» ¹àÈ÷°í ÀÖ´Â °ÍÀÌ´Ù. µðÆúÆ® Àμö¸¦ °¡Áö´Â ÇÔ¼ö¸¦ °¡¸®Å°´Â ÇÔ¼ö Æ÷ÀÎÅ͵µ ºñ½ÁÇÑ ¹æ½ÄÀ¸·Î ¼±¾ðµÈ´Ù. ÇÔ¼ö Æ÷ÀÎÅÍÀÇ Àμö ¸ñ·Ï¿¡ ±âº»°ªÀ» Àû¾î ÁÖ¸é ÀÌ ÇÔ¼ö Æ÷ÀÎÅÍ·Î µðÆúÆ® Àμö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô µÇ¸é ÀμöÀÇ °³¼ö¿Í ŸÀÔÀº °°µÇ µðÆúÆ®°ªÀÌ ´Ù¸¥ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¼±¾ðÇÒ ¼öµµ Àִµ¥ ÀÌ·² °æ¿ì ÄÄÆÄÀÏ·¯°¡ ¾î¶² µðÆúÆ®¸¦ ÃëÇÒÁö ±Ã±ÝÇØÁø´Ù. ´Ù¼Ò ¿±±âÀûÀÎ Å×½ºÆ®Àε¥ ±Ã±ÝÁõÀÌ »ý°åÀ¸¸é Å×½ºÆ®ÇØ º¸ÀÚ.

 

¿¹ Á¦ : DefParaPtr

#include <Turboc.h>

 

void f(int a=3)

{

     printf("%d\n",a);

}

 

void main()

{

     void (*pf)(int=3);

     void (*pf2)(int=4);

     pf=f;

     pf2=pf;

     pf();

     pf2();

}

 

pf, pf2 ¸ðµÎ Á¤¼öÇü Àμö Çϳª¸¦ ÃëÇÏ´Â ÇÔ¼ö¸¦ °¡¸®Å°µÇ pf´Â µðÆúÆ®°ªÀÌ 3ÀÌ°í pf2´Â 4ÀÌ´Ù. ½ÇÁ¦ ÇÔ¼ö fÀÇ µðÆúÆ® Àμö´Â 3À¸·Î Á¤ÀǵǾî Àִµ¥ ÀÌ ÇÔ¼öÀÇ ¹øÁö¸¦ pf°¡ ´ëÀÔ¹Þ°í pf¸¦ ´Ù½Ã pf2¿¡ ´ëÀÔÇß´Ù. µÎ ÇÔ¼ö Æ÷ÀÎÅÍÀÇ µðÆúÆ®°ªÀÌ ´Ù¸£Áö¸¸ ÀÏ´Ü ´ëÀÔÀº °¡´ÉÇÏ´Ù. µðÆúÆ® °ª ÀÚü°¡ ÇÔ¼ö Æ÷ÀÎÅÍÀÇ Å¸ÀÔÀ» °áÁ¤Áþ´Â ¿ä¼Ò´Â ¾Æ´Ñ °ÍÀÌ´Ù. ±×·¸´Ù¸é °¢°¢ÀÇ ÇÔ¼ö Æ÷ÀÎÅÍ·Î f¸¦ È£ÃâÇÏ¸é ¾î¶² µðÆúÆ® °ªÀÌ Àû¿ëµÉ±î?

½ÇÇàÇØ º¸¸é 3°ú 4°¡ Ãâ·ÂµÈ´Ù. VC60, Dev-C++ ¸ðµÎ °á°ú°¡ °°À¸¸ç ÄÄÆÄÀÏ·¯¿¡ µû¸¥ Â÷ÀÌÁ¡Àº ¾ø´Ù. pf·Î È£ÃâÇÑ °á°ú´Â 3ÀÌ µÇ´Â °ÍÀÌ ´ç¿¬Çѵ¥ pf2·Î È£ÃâÇßÀ» ¶§´Â ÀÌ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÇÔ¼öÀÇ µðÆúÆ®¸¦ µû¸£Áö ¾Ê°í ÇÔ¼ö Æ÷ÀÎÅÍÀÇ µðÆúÆ®¸¦ µû¸¥´Ù. ¾îÂî º¸¸é ÀÌ´Â ´ç¿¬ÇÑ °á°úÀε¥ ÄÄÆÄÀÏ·¯´Â ½ÇÇàÁß¿¡ ÇÔ¼ö Æ÷ÀÎÅÍ°¡ ¾î¶² ÇÔ¼ö¸¦ °¡¸®Å³Áö ¾Ë ¼ö ¾øÀ¸¹Ç·Î ÇÔ¼ö Æ÷ÀÎÅÍÀÇ Å¸ÀÔ¿¡ ÁöÁ¤µÈ µðÆúÆ®¸¦ µû¸£´Â ¼ö¹Û¿¡ ¾ø´Ù.