µðÆúÆ® Àμö´Â ¸î °¡Áö ÁÖÀÇ »çÇ׸¸ ¾Ë¾ÆµÎ¸é ±²ÀåÈ÷ »ç¿ëÇϱ⠽±´Ù. ¸ÕÀú ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¶§ÀÇ ÁÖÀÇÁ¡ºÎÅÍ ¾Ë¾Æº¸ÀÚ.
µðÆúÆ® Àμö´Â ÇÔ¼öÀÇ ¿øÇü¿¡¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç Á¤ÀǺο¡¼´Â Áߺ¹ ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. ¿øÇü ¼±¾ð¾øÀÌ Á¤ÀǺθ¸ ÀÖ´Ù¸é Á¤ÀǺο¡ µðÆúÆ® Àμö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ¿øÇü°ú Á¤ÀǺΰ¡ µ¿½Ã¿¡ Á¸ÀçÇÏ´Â ÀϹÝÀûÀÎ °æ¿ì¿¡´Â ¿øÇü ¼±¾ð¿¡¸¸ µðÆúÆ® Àμö°¡ ÀÖ¾î¾ß ÇÑ´Ù. ¿øÇü¿¡¼ ±âº»°ªÀ» Á¤ÀÇÇÏ°í Á¤ÀǺο¡ ¶Ç ±âº»°ªÀ» ÁöÁ¤Çϸé Áߺ¹ Á¤ÀÇ ¿¡·¯·Î 󸮵Ǵµ¥ ÀÌ´Â ºÒÀÏÄ¡·Î ÀÎÇÑ ¸ðÈ£ÇÔÀ» Á¦°ÅÇϱâ À§ÇÑ ±ÔÄ¢ÀÌ´Ù. Á¤ÀǺο¡´Â Àμö ¸ñ·Ï¸¸ ³²°Ü µÎ°Å³ª ±âº»°ªÀ» ²À ¸í½ÃÇÏ°í ½Í´Ù¸é ¿¹Á¦¿¡¼Ã³·³ ±âº»°ªÀ» /* */ ÁÖ¼®À¸·Î ¹¾î¾ß ÇÑ´Ù. ÀÌ ÁÖ¼®Àº ¿øÇüÀ» º¸Áö ¾Ê°íµµ °³¹ßÀÚ°¡ ÀμöÀÇ ±âº»°ªÀ» ½±°Ô ÆľÇÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù.
µðÆúÆ® Àμö´Â ¿À¸¥ÂʺÎÅÍ ¼ø¼´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç °¡¿îµ¥ ÀμöµéÀº ±âº»°ªÀ» ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.
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·Î È£ÃâÇßÀ» ¶§´Â ÀÌ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÇÔ¼öÀÇ µðÆúÆ®¸¦ µû¸£Áö ¾Ê°í ÇÔ¼ö Æ÷ÀÎÅÍÀÇ µðÆúÆ®¸¦ µû¸¥´Ù. ¾îÂî º¸¸é ÀÌ´Â ´ç¿¬ÇÑ °á°úÀε¥ ÄÄÆÄÀÏ·¯´Â ½ÇÇàÁß¿¡ ÇÔ¼ö Æ÷ÀÎÅÍ°¡ ¾î¶² ÇÔ¼ö¸¦ °¡¸®Å³Áö ¾Ë ¼ö ¾øÀ¸¹Ç·Î ÇÔ¼ö Æ÷ÀÎÅÍÀÇ Å¸ÀÔ¿¡ ÁöÁ¤µÈ µðÆúÆ®¸¦ µû¸£´Â ¼ö¹Û¿¡ ¾ø´Ù.