16-5-³ª.Áߺ¹ÀÌ ¾ÈµÇ´Â °æ¿ì

Á¶±Ý¾¿ ´Ù¸¥ µ¿ÀÛ(¶Ç´Â À¯»çÇÑ µ¿ÀÛ)À» ÇÏ´Â ÇÔ¼ö ¿©·¯ ¹úÀ» °°Àº À̸§À¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ¾ÆÁÖ ¸ÚÁø ÀÏÀ̸ç Àß »ç¿ëÇÏ¸é ¹«Ã´ Æí¸®ÇÏ´Ù. ±×·¯³ª ¿À¹ö·Îµùµµ ¾Æ¹«·± ±ÔÄ¢¾øÀÌ ¸¶À½´ë·Î ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï¸ç ÀÏÁ¤ÇÑ ±ÔÄ¢¿¡ µû¶ó Áߺ¹ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÀÏ´Ü ´ÙÀ½ µÎ ÇÔ¼ö¸¦ º¸ÀÚ.

 

int Add(int a, int b);

int Add(int c, int d);

 

Àμö ¸ñ·ÏÀÌ Á¶±Ý Ʋ¸®°Ô ÀÛ¼ºµÇ¾î ÀÖÁö¸¸ »ç½ÇÀº ¶È°°Àº ÇÔ¼öÀÏ »ÓÀÌ´Ù. Çü½Ä ÀμöÀÇ À̸§Àº ÇÔ¼öÀÇ ¿øÇü¿¡¼­ ¾Æ¹«·± Àǹ̰¡ ¾ø±â ¶§¹®¿¡ ÀμöÀÇ À̸§ÀÌ ´Ù¸¥ °ÍÀº Áߺ¹ Á¤ÀÇÀÇ ´ë»óÀÌ µÇÁö ¸øÇÑ´Ù. ³Ê¹«³ªµµ »ó½ÄÀûÀÎ ¾ê±âÀ̹ǷΠ½±°Ô ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. ÀÌ ¿Ü¿¡µµ µÉ °Í °°Áö¸¸ Áߺ¹ Á¤ÀÇ°¡ ¾ÈµÇ´Â °æ¿ì°¡ ¸¹ÀÌ ÀÖÀ¸¹Ç·Î ¼ø¼­´ë·Î Á¤¸®ÇØ º¸ÀÚ.

 

 ¸®ÅÏ Å¸ÀÔ¸¸ ´Ù¸¥ °æ¿ì

ÇÔ¼öÀÇ ¸®ÅÏ Å¸ÀÔ(°á±¹ ÇÔ¼öÀÇ Å¸ÀÔ)µµ Áߺ¹ Á¤ÀÇÀÇ Àç·á°¡ µÉ ¼ö ¾ø´Ù. Àμö ¸ñ·ÏÀÌ °°°í ¸®ÅÏ Å¸ÀÔ¸¸ ´Ù¸¥ µÎ ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù°í ÇØ º¸ÀÚ.

 

int func(int a, double b);

double func(int a, double b);

 

ÀÌ °æ¿ì func(1, 2.3) È£Ãâ¹®Àº °ú¿¬ ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î Çؼ®µÉ±î? È£ÃâºÎ¿¡¼­ ¸®ÅÏ°ªÀ» ¹«½ÃÇØ ¹ö¸± ¼öµµ Àֱ⠶§¹®¿¡ ¸®ÅÏ°ªÀ¸·Î´Â È£ÃâÇÒ ÇÔ¼ö¸¦ ±¸º°ÇÒ ¼ö°¡ ¾ø´Ù. ¼³»ç int i=func(1, 2.3)À¸·Î ¸®ÅÏ°ªÀ» ´ëÀԹ޴´٠ÇÏ´õ¶óµµ ¸®ÅÏ°ªÀº ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ Àû¿ëµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇÔ¼ö°¡ ½ÇÇàÀ» ¸¶Ä£ ÈÄ¿¡ Àû¿ëµÇ´Â °ÍÀ̱⠶§¹®¿¡ È£Ãâ ½ÃÁ¡¿¡¼­ ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÏ´Â ±Ù°Å°¡ µÇÁö ¸øÇÑ´Ù.

 ·¹ÆÛ·±½º¿Í ÀÏ¹Ý º¯¼ö

Àμö ¸ñ·Ï¿¡ ·¹ÆÛ·±½º°¡ Àü´ÞµÇ´Â °æ¿ì¿Í ÀÏ¹Ý º¯¼ö°¡ Àü´ÞµÇ´Â °æ¿ìµµ Áߺ¹ Á¤ÀÇÇÒ ¼ö ¾ø´Ù.

 

int Add(int a, int b);

int Add(int &a, int &b)

 

ÀÌ·¸°Ô Á¤ÀǵǾî ÀÖÀ» °æ¿ì Add(a, b)°¡ ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÏ´ÂÁö °áÁ¤ÇÒ ¼ö ¾ø´Ù. ·¹ÆÛ·±½º¸¦ Àμö·Î ÃëÇÏ´Â ÇÔ¼öÀÇ È£ÃâºÎ´Â °ª È£ÃâÀ» ÇÏ´Â ÇÔ¼ö¿Í ÇüÅ°¡ µ¿ÀÏÇϱ⠶§¹®¿¡ ¸ðÈ£ÇÔÀÌ ¹ß»ýÇÑ´Ù. ·¹ÆÛ·±½º¸¦ Àμö·Î ÃëÇÏ´Â ÇÔ¼ö¿Í ÀÏ¹Ý º¯¼ö¸¦ Àμö·Î ÃëÇÏ´Â ÇÔ¼ö´Â ÀÏ´Ü Áߺ¹ Á¤ÀÇ ÀÚü´Â °¡´ÉÇÏÁö¸¸ È£ÃâÇÒ ¶§ ¿¡·¯·Î 󸮵ȴÙ.

 const ÁöÁ¤ÀÚ°¡ ÀÖ´Â °æ¿ì¿Í ¾ø´Â °æ¿ì

ÀÌ °æ¿ì´Â Áߺ¹ Á¤ÀÇÀÇ Àç·á°¡ µÉ ¼ö ÀÖ´Ù. const¿Í °°Àº ºÎ·ùÀÇ ÁöÁ¤ÀÚÀÎ volatileµµ º°·Î ½Ç¿ë¼ºÀº ¾øÁö¸¸ Áߺ¹ Á¤ÀÇÀÇ ´ë»óÀÌ´Ù. Àμö°¡ »ó¼ö ¼ºÁúÀ» °¡Áö´Â°¡ ¾Æ´Ñ°¡´Â È£Ãâ ½ÃÁ¡¿¡¼­ ±¸ºÐ °¡´ÉÇϹǷΠ´ÙÀ½ µÎ ÇÔ¼ö´Â °°Àº À̸§À¸·Î Áߺ¹ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

 

int strlength(char *s);

int strlength(const char *s);

 

Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹®ÀÚ¿­ÀÌ »ó¼öÀÎÁö ¾Æ´ÑÁö´Â ÄÄÆÄÀÏ·¯°¡ ½±°Ô ÆÇ´ÜÇÒ ¼ö ÀÖÀ¸¹Ç·Î Àü´ÞµÇ´Â ÀμöÀÇ Å¸ÀÔÀ¸·Î È£ÃâÇÒ ÇÔ¼ö¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ´Ü Æ÷ÀÎÅÍ ÀÚü°¡ »ó¼öÀÎ °æ¿ì¿Í ±×·¸Áö ¾ÊÀº °æ¿ì´Â ±¸ºÐµÇÁö ¾Ê´Â´Ù.

 

int strlength(char * const s);

 

ÀÌ °æ¿ì´Â char *s¸¦ ÃëÇÏ´Â Àμö¿Í µ¿ÀÏÇÑ ÇÔ¼ö·Î Ãë±ÞµÈ´Ù. ¸¶Âù°¡Áö·Î int i¸¦ ÃëÇÏ´Â ÇÔ¼ö¿Í const int i¸¦ ÃëÇÏ´Â ÇÔ¼öµµ °°Àº ÇÔ¼öÀ̹ǷΠÁߺ¹ Á¤ÀÇÇÒ ¼ö ¾ø´Ù. const ÁöÁ¤ÀÚ¿Í ¿À¹ö·ÎµùÀÇ °ü°è´Â ´Ù¼Ò º¹ÀâÇѵ¥ ´ÙÀ½ ¿¹Á¦·Î ÀÌÀ¯¸¦ Å×½ºÆ®ÇØ º¸µÇ ±×´ÙÁö Áß¿äÇÏÁö´Â ¾ÊÀ¸¹Ç·Î ²À ÀÌÇØÇÒ ÇÊ¿ä´Â ¾ø´Ù.

 

¿¹ Á¦ : constOverload

#include <TurboC.h>

 

int strlength(char *s)

{

     puts("char *");

     return 0;

}

 

int strlength(const char *s)

{

     puts("const char *");

     return 0;

}

 

/*

int strlength(char * const s)

{

     puts("const char *");

     return 0;

}

//*/

 

void main()

{

     char str1[]="1234";

     const char *str2="°¡³ª´Ù¶ó";

     char * const str3="abcd";

 

     strlength(str1);

     strlength(str2);

     strlength(str3);

}

 

ÀÏ¹Ý Æ÷ÀÎÅÍ¿Í »ó¼ö Áö½Ã Æ÷ÀÎÅ͸¦ ¹Þ´Â µÎ ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÏ°í main¿¡¼­ »ó¼ö¼ºÀÌ ´Ù¸¥ µÎ Æ÷ÀÎÅ͸¦ ¸¸µé°í ÀÌ ÇÔ¼ö¸¦ Å×½ºÆ®ÇØ º¸¾Ò´Ù. ÇÔ¼ö À̸§ÀÌ strlength·Î µÇ¾î ÀÖ¾î ¹®ÀÚ¿­ ±æÀ̸¦ ±¸ÇÏ´Â °ÍÀ¸·Î µÇ¾î ÀÖÁö¸¸ ¾îÂ÷ÇÇ Áö±Ý °ü½É ´ë»óÀº ¾î¶² ÇÔ¼ö°¡ È£ÃâµÇ´Â°¡À̹ǷΠ½ÇÁ¦·Î ±æÀ̸¦ Á¶»çÇÏÁö´Â ¾Ê¾Ò´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

char *

const char *

char *

 

str1 ¹è¿­Àº º¯°æ °¡´ÉÇÑ ¹è¿­À̹ǷΠchar * ¹öÀüÀÌ, str2´Â »ó¼ö Áö½Ã Æ÷ÀÎÅÍÀ̹ǷΠconst char * ¹öÀüÀÌ È£ÃâµÇ¾ú´Ù. ¸¶Áö¸· »ó¼ö Æ÷ÀÎÅÍ str3Àº Æ÷ÀÎÅÍ´Â »ó¼öÁö¸¸ ±× ´ë»óü¸¦ º¯°æÇÒ ¼ö ÀÖÀ¸¹Ç·Î char * ¹öÀüÀÌ È£ÃâµÈ´Ù. ¸¸¾à strlength(char *s) ÇÔ¼ö°¡ ³»ºÎ¿¡¼­ sÀÇ ¹øÁö¸¦ s++ µûÀ§·Î º¯°æÇÑ´Ù ÇÏ´õ¶óµµ À̶§ÀÇ s´Â ¾îÂ÷ÇÇ Áö¿ªº¯¼öÀÏ»ÓÀ̹ǷΠ½ÇÀμöÀÎ str3 »ó¼ö Æ÷ÀÎÅÍ°¡ º¯°æµÇ´Â °ÍÀº ¾Æ´Ï´Ù. µû¶ó¼­ »ó¼ö Æ÷ÀÎÅ͸¦ ÀÏ¹Ý Æ÷ÀÎÅ͸¦ ÃëÇÏ´Â ÇÔ¼ö¿¡°Ô Àü´ÞÇÏ´õ¶óµµ ³í¸®ÀûÀ¸·Î ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù.

À§ ¿¹Á¦¿¡¼­ ¼¼ ¹ø° ¹öÀüÀÎ strlength(char * const s) ÇÔ¼ö¸¦ Á¤ÀÇÇϸé ÀÌ´Â ¿¡·¯·Î 󸮵ȴÙ. ¸¸¾à ÀÌ Çü½ÄÀÇ ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇϵµ·Ï Çã¶ôÇÑ´Ù¸é strlength(str1) È£ÃâÀÌ ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÏ´ÂÁö ¾Ö¸ÅÇÑ »óȲÀÌ µÇ°í ¸¸´Ù. Àμö·Î Àü´ÞµÈ Æ÷ÀÎÅÍÀÇ »ó¼ö¼ºÀº ÇÔ¼ö º»Ã¼¿¡¼­ ÀÌ Çü½Ä Àμö¸¦ ¹Ù²Ü ¼ö Àִ°¡ ¾Æ´Ñ°¡¸¦ ÁöÁ¤ÇÒ »ÓÀÌÁö ½ÇÀμöÀÇ »ó¼ö¼º°ú´Â ¾Æ¹«·± »ó°üÀÌ ¾øÀ¸¹Ç·Î È£Ãâ ½ÃÁ¡¿¡¼­ ¾î¶² ÇÔ¼ö°¡ Á¤È®ÇÑÁö ÆÇ´ÜÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù.

 ÀμöÀÇ ³í¸®Àû Àǹ̸¸ ´Ù¸¥ °æ¿ì

Çлý ÀθíºÎ¿¡¼­ ÁÖ¾îÁø Á¶°ÇÀ¸·ÎºÎÅÍ Çлý ÇÑ ¸íÀ» °Ë»öÇÏ´Â ÇÔ¼ö¸¦ ¸¸µç´Ù°í ÇØ º¸ÀÚ. Çлý¿¡ ´ëÇÑ °Ë»ö Á¶°ÇÀº Çаú¿Í Ãâ¼® ¹øÈ£·Î ÇÒ ¼öµµ ÀÖ°í À̸§°ú ÇйøÀ¸·Î ÇÒ ¼öµµ Àִµ¥ °Ë»ö Á¶°Ç¿¡ µû¶ó µÎ ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÏ°íÀÚ ÇÑ´Ù. ±×·¯¸é ÀÌ ÇÔ¼öµéÀÇ ¿øÇüÀº ´ÙÀ½°ú °°¾ÆÁú °ÍÀÌ´Ù.

 

int FindStudent(char *depart, int depnum);

int FindStudent(char *name, int stnum);

 

ÀÌ·¸°Ô ¸¸µé¾î ³õ°í Çаú·Î ãÀ» ¶§´Â FindStudent("±¹¹®°ú", "0512345")¶ó°í ºÎ¸£°í À̸§À¸·Î ãÀ» ¶§´Â FindStudent("±èÇÑ°á", "040513-4251017"); À̶ó°í ºÎ¸£°í ½ÍÀº °ÍÀÌ´Ù. ±×·¯³ª ÀÌ °æ¿ì´Â ÀμöÀÇ ³í¸®ÀûÀÎ Àǹ̰¡ ´Ù¸£´Ù ÇÏ´õ¶óµµ ¹°¸®ÀûÀΠŸÀÔÀÌ µ¿ÀÏÇϱ⠶§¹®¿¡ Áߺ¹ Á¤ÀÇÇÒ ¼ö ¾ø´Ù. ÄÄÆÄÀÏ·¯´Â ÀμöÀÇ Å¸ÀÔ¸¸ º¼ »ÓÀÌÁö ÀμöÀÇ ³í¸®ÀûÀÎ Àṉ̀îÁö ¾Ë¸® ¸¸¹«ÇÏ´Ù. "±¹¹®°ú"°¡ Çаú À̸§ÀÎÁö ¾Æ´Ï¸é ¼ºÀÌ ±¹¾¾°í À̸§ÀÌ ¹®°úÀÎ »ç¶÷ À̸§ÀÎÁö ¿ì¸ÅÇÑ ÄÄÆÄÀÏ·¯°¡ ¾îÂî ±¸ºÐÇϰڴ°¡?

¸¸¾à ²À ÀÌ·± ½ÄÀ¸·Î µÎ ÇÔ¼ö¸¦ ¸¸µé¾î¾ß ÇÑ´Ù¸é ÀμöÀÇ ¼ø¼­¸¦ ¹Ù²Ù°Å³ª(int, char *) ´õ¹Ì Àμö¸¦ Çϳª ´õ Áý¾î ³Ö´Â ½Ä(char *, int, int)À¸·Î ÇØ°áÇÒ ¼ö´Â ÀÖ´Ù. ±×·¯³ª ÀÌ·¸°Ô µÇ¸é ºÒÆíÇØÁö°í º¸±â¿¡µµ ÁÁÁö ¾ÊÀ¸¹Ç·Î ÀÌ·± °æ¿ì´Â ¾Æ¿¹ ´Ù¸¥ À̸§À¸·Î ÇÔ¼ö¸¦ »õ·Î ¸¸µå´Â °ÍÀÌ ´õ ÁÁ´Ù.

 µðÆúÆ® Àμö¿¡ ÀÇÇØ °°¾ÆÁú ¼ö ÀÖ´Â °æ¿ì

¾Õ ¿¹Á¦¿¡¼­ Á¤¼ö ¼ÂÀ» Àμö·Î ÃëÇÏ´Â Add(int, int, int) ÇÔ¼öÀÇ ¿øÇüÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù°í ÇØ º¸ÀÚ. ¼¼ ¹ø° Àμö c¿¡ ±âº»°ª 0À» ÁÖ¾ú´Ù.

 

int Add(int a, int b, int c=0);

 

ÀÌ·¸°Ô µÇ¸é Add(1,2) È£Ãâ¹®ÀÌ Add(int, int) ÀÎÁö ¾Æ´Ï¸é Add(int, int, 0) ÀÎÁö ±¸ºÐµÇÁö ¾Ê´Â ¸ðÈ£ÇÔÀÌ »ý±ä´Ù. ÀÌ·± Áߺ¹ Á¤Àǵµ Á¤ÀÇ ÀÚü´Â °¡´ÉÇÏÁö¸¸ ¸ðÈ£ÇÑ È£ÃâÀÌ ¹ß»ýÇÒ ¶§ ¿¡·¯·Î 󸮵ȴÙ.

 ´Þ¶ó º¸ÀÌÁö¸¸ ½ÇÁ¦·Î °°Àº ŸÀÔÀÎ °æ¿ì.

ÄÄÆÄÀÏ·¯°¡ ¿À¹ö·ÎµåµÈ ÇÔ¼ö¸¦ ±¸ºÐÇÒ ¶§´Â ÀμöÀÇ Å¸ÀÔ À̸§À» º¸´Â °ÍÀÌ ¾Æ´Ï¶ó ½ÇÁ¦ ŸÀÔÀ» °Ë»çÇÑ´Ù. ±×·¡¼­ typedef³ª ¸ÅÅ©·Î µîÀ¸·Î Á¤ÀÇµÈ »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔµéÀÌ °á±¹ °°Àº ŸÀÔÀÌ µÇ´Â °æ¿ì´Â Áߺ¹ Á¤ÀÇÇÒ ¼ö ¾ø´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

 

#define INTPTR int *

typedef int *PINT;

void func(int *p);

void func(PINT p);

void func(INTPTR p);

 

¼¼ Á¾·ùÀÇ funcÇÔ¼ö°¡ ¸ðµÎ ´Ù¸¥ Àμö¸¦ ÃëÇÏ´Â °Í °°Áö¸¸ Á¤ÀÇµÈ Å¸ÀÔÀÇ ½ÇÁ¦ ÇüÅ°¡ µ¿ÀÏÇϱ⠶§¹®¿¡ °á±¹ ¿ÏÀüÈ÷ °°Àº ÇÔ¼ö¸¦ ¼¼ ¹ø Áߺ¹ Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù. ´ç¿¬È÷ ¿¡·¯·Î 󸮵ȴÙ. ´ÙÀ½ÀÇ °æ¿ìµµ ¸¶Âù°¡ÁöÀÌ´Ù.

 

void func(int *p);

void func(int p[]);

 

Á¤¼öÇü Æ÷ÀÎÅͳª Á¤¼ö ¹è¿­ÇüÀ̳ª °°Àº Æ÷ÀÎÅÍÇüÀ̸ç ÇÔ¼ö ³»¿¡¼­´Â °°Àº ŸÀÔÀ¸·Î Ãë±ÞµÇ¹Ç·Î ¿ª½Ã ¿À¹ö·ÎµùµÉ ¼ö ¾ø´Ù.