15-4-³ª.·¹ÆÛ·±½º Àμö

¾Õ¿¡¼­´Â Á¤¼öÇü º¯¼ö i¿¡ ´ëÇÑ º°¸íÀ¸·Î ri ·¹ÆÛ·±½º¸¦ ¼±¾ðÇÏ°í »ç¿ëÇÏ´Â ¿¹¸¦ º¸¿´¾ú´Ù. ÀÌ ¿¹Á¦´Â ·¹ÆÛ·±½ºÀÇ µ¿ÀÛÀ» ¼³¸íÇϱâ À§ÇØ ÀǵµÀûÀ¸·Î ¸¸µç °ÍÀÌ¸ç ½Ç¿ëÀûÀÎ Àǹ̴ °ÅÀÇ ¾ø´Â ¼ÀÀÌ´Ù. ÀÌ¹Ì Á¸ÀçÇÏ´Â º¯¼ö¸¦ °°Àº ÇÔ¼ö ³»¿¡¼­ ´Ù¸¥ À̸§À¸·Î º°¸íÀ» ¸¸µé¾î »ç¿ëÇÏ´Â °ÍÀÌ ¹«½¼ Àǹ̰¡ Àְڴ°¡? ri°¡ i¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇϹǷΠº°¸íÀ» ¸¸µé ÇÊ¿ä¾øÀÌ ±×³É i¸¦ ¹Ù·Î ¾²´Â °ÍÀÌ ÈξÀ ´õ °£ÆíÇÏ´Ù.

·¹ÆÛ·±½º°¡ ½Ç¿ëÀûÀÎ À§·ÂÀ» ¹ßÈÖÇÒ ¶§´Â ÇÔ¼öÀÇ Àμö·Î Àü´ÞµÉ ¶§ÀÌ´Ù. ÇÔ¼ö°¡ ·¹ÆÛ·±½º¸¦ ¹Þ¾Æ µéÀ̸é È£ÃâºÎÀÇ ½ÇÀμö¿¡ ´ëÇÑ º°¸íÀ» Àü´Þ¹Þ´Â ¼ÀÀ̹ǷΠÇÔ¼ö ³»¿¡¼­ ½ÇÀμö¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ·¹ÆÛ·±½ºÀÇ °ªÀ» ÀÐÀ¸¸é ½ÇÀμöÀÇ °ªÀ» ÀÐÀ» ¼ö ÀÖ°í ·¹ÆÛ·±½º¸¦ º¯°æÇÏ¸é ½ÇÀμöÀÇ °ªµµ °°ÀÌ º¯°æµÇ¹Ç·Î Àǹ̻óÀ¸·Î ¿ÏÀüÇÑ ÂüÁ¶ È£ÃâÀÌ µÇ´Â °ÍÀÌ´Ù.

6Àå¿¡¼­ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ÂüÁ¶ È£ÃâÀ» ±¸ÇöÇÏ´Â CallRef ¿¹Á¦¸¦ ¸¸µé¾î º» ÀûÀÌ Àִµ¥ À̹ø¿¡´Â Æ÷ÀÎÅͰ¡ ¾Æ´Ñ ·¹ÆÛ·±½º·Î µ¿ÀÏÇÑ ±â´ÉÀ» ¼öÇàÇÏ´Â ¿¹Á¦¸¦ ¸¸µé¾î º¼ °ÍÀÌ´Ù. CallRef ¿¹Á¦ÀÇ ·¹ÆÛ·±½º ¹öÀüÀ̹ǷΠÀß »ý°¢ÀÌ ³ªÁö ¾Ê´Â »ç¶÷Àº 6ÀåÀÇ ¿¹Á¦¸¦ ´Ù½Ã ºÐ¼®ÇØ º¸°í ´ÙÀ½ ¿¹Á¦¿Í ¾î¶»°Ô ´Ù¸¥Áö ºñ±³ÇØ º¸ÀÚ.

 

¿¹ Á¦ : CallRef2

#include <Turboc.h>

 

void plusref2(int &a);

 

void main()

{

     int i;

 

     i=5;

     plusref2(i);

     printf("°á°ú=%d\n",i);

}

 

void plusref2(int &a)

{

     a=a+1;

}

 

½ÇÇà °á°ú´Â CallRef ¿¹Á¦¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇϸç plusref2 ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ Á¤¼ö°ªÀ» 1Áõ°¡½ÃÄÑ µ¹·ÁÁØ´Ù. 5ÀÇ °ªÀ» °¡Áö´Â i¸¦ ·¹ÆÛ·±½º·Î Àü´ÞÇßÀ¸¹Ç·Î i´Â 6ÀÌ µÇ¾î µ¹¾Æ¿À¸ç Ãâ·Â °á°ú´Â "°á°ú=6"ÀÌ µÉ °ÍÀÌ´Ù. Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ºñÇØ ·¹ÆÛ·±½º¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°Àº Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù.

 

¨ç ÇÔ¼ö ¿øÇüÀÌ ´Þ¶óÁ³´Âµ¥ int *a(Æ÷ÀÎÅÍ)°¡ ¾Æ´Ñ int &a(·¹ÆÛ·±½º)¸¦ Àü´Þ¹Þ´Â´Ù. ±×·¡¼­ plusref2 ÇÔ¼ö ³»¿¡¼­ Çü½ÄÀμö a´Â ½ÇÀμö¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÑ º¯¼ö°¡ µÇ¸ç Çü½ÄÀμö a¸¦ ¹Ù²Ù¸é ½ÇÀμö°ªÀÌ ¹Ù²ï´Ù.

¨è ÇÔ¼ö º»Ã¼¿¡¼­ Çü½Ä Àμö¸¦ ÂüÁ¶ÇÒ ¶§ * ¿¬»êÀÚ¸¦ ºÙÀÏ Çʿ䰡 ¾ø´Ù. plusref2 ÇÔ¼öÀÇ Çü½ÄÀμö a´Â Æ÷ÀÎÅͰ¡ ¾Æ´Ï¶ó ·¹ÆÛ·±½ºÀ̹ǷΠ* ¿¬»êÀÚ¸¦ ºÙÀÌÁö ¾Ê¾Æµµ ½ÇÀμö¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. a=3À¸·Î ´ëÀÔÇÏ¸é ½ÇÀμö°¡ 3ÀÌ µÇ¸ç a++ÇÏ¸é ½ÇÀμö°¡ 1 Áõ°¡ÇÑ´Ù. ¸¸¾à ÇÔ¼ö·Î Àü´ÞµÈ ´ë»óü°¡ ±¸Á¶Ã¼¶ó¸é -> ¿¬»êÀÚ¸¦ ¾µ ÇÊ¿ä¾øÀÌ ¹Ù·Î . ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù.

¨é ÇÔ¼ö È£ÃâºÎµµ ´Þ¶óÁ³´Ù. Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î &i¸¦ Àü´ÞÇÒ ÇÊ¿ä¾øÀÌ i¸¦ ¹Ù·Î Àü´ÞÇÏ¸é µÈ´Ù. °ª È£ÃâÀ» ÇÒ ¶§¿Í Çü½ÄÀÌ ¶È°°´Ù. plusref2 ÇÔ¼ö´Â ½ÇÀμö iÀÇ º°¸íÀÎ ·¹ÆÛ·±½º a¸¦ ¸¸µé°í a¸¦ ÅëÇØ i¸¦ Á¶ÀÛÇÑ´Ù.

 

´ÙÀ½Àº Á» ´õ ½Ç¿ëÀûÀÎ ¿¹ÀÎ ±¸Á¶Ã¼¸¦ ÅëÇØ °ª È£Ãâ°ú, Æ÷ÀÎÅ͸¦ ÅëÇÑ ÂüÁ¶ È£Ã⠱׸®°í ·¹ÆÛ·±½º¸¦ ÅëÇÑ ÂüÁ¶ È£ÃâÀ» ºñ±³ÇØ º¸ÀÚ. ´ÙÀ½ ¿¹Á¦´Â tag_Friend ±¸Á¶Ã¼¸¦ Ãâ·ÂÇÏ´Â ÇÔ¼ö¸¦ ¼¼ °¡Áö ¹öÀüÀ¸·Î ÀÛ¼ºÇÑ °ÍÀÌ´Ù.

 

¿¹ Á¦ : CallRef3

#include <Turboc.h>

 

struct tag_Friend {

     char Name[10];

     int Age;

     double Height;

};

 

void OutFriend(tag_Friend F);

void OutFriendPtr(tag_Friend *F);

void OutFriendRef(tag_Friend &F);

 

void main()

{

     tag_Friend Friend={"±è»óÇü",24,181.2};

     OutFriend(Friend);

     OutFriendPtr(&Friend);

     OutFriendRef(Friend);

}

 

void OutFriend(tag_Friend F)                          // °ª È£Ãâ

{

     printf("À̸§=%s, ³ªÀÌ=%d, Ű=%.1f\n",

          F.Name,F.Age,F.Height);

}

 

void OutFriendPtr(tag_Friend *F)                // Æ÷ÀÎÅÍ ÂüÁ¶ È£Ãâ

{

     printf("À̸§=%s, ³ªÀÌ=%d, Ű=%.1f\n",

          F->Name,F->Age,F->Height);

}

 

void OutFriendRef(tag_Friend &F)               // ·¹ÆÛ·±½º ÂüÁ¶ È£Ãâ

{

     printf("À̸§=%s, ³ªÀÌ=%d, Ű=%.1f\n",

          F.Name,F.Age,F.Height);

}

 

Friend ±¸Á¶Ã¼¸¦ Çϳª ¼±¾ð ¹× ÃʱâÈ­Çϰí ÀÌ ±¸Á¶Ã¼¸¦ ¼¼ °¡Áö ¹æ¹ýÀ¸·Î Ãâ·ÂÇØ º¸¾Ò´Ù. ¼¼ ¹æ¹ý ¸ðµÎ ±¸Á¶Ã¼ÀÇ ³»¿ëÀ» Ãâ·ÂÇϱâ´Â ¸¶Âù°¡ÁöÀ̹ǷΠ°á°ú´Â ÀÏ´Ü µ¿ÀÏÇÏ´Ù.

 

À̸§=±è»óÇü, ³ªÀÌ=24, Ű=181.2

À̸§=±è»óÇü, ³ªÀÌ=24, Ű=181.2

À̸§=±è»óÇü, ³ªÀÌ=24, Ű=181.2

 

°ª È£ÃâÀ» »ç¿ëÇÏ´Â OutFriend ÇÔ¼ö´Â Friend ±¸Á¶Ã¼ÀÇ »çº» F¸¦ Àü´Þ¹Þ´Âµ¥ ÀÌ °úÁ¤¿¡¼­ ½ÇÀμö°¡ Çü½ÄÀμö·Î º¹»çµÈ´Ù. ±¸Á¶Ã¼´Â Á¤¼ö³ª Æ÷ÀÎÅÍ¿¡ ºñÇØ Å©±â ¶§¹®¿¡ º¹»ç ½Ã°£ÀÌ ÈξÀ ´õ ¿À·¡ °É¸®¸ç µû¶ó¼­ ÇÔ¼ö È£Ãâ ¼Óµµ°¡ ´À¸®´Ù. ¶ÇÇÑ ±¸Á¶Ã¼ÀÇ »çº»À» °ªÀ¸·Î Àü´Þ¹Þ¾Ò±â ¶§¹®¿¡ OutFriend ÇÔ¼ö ³»ºÎ¿¡¼­ FÀÇ ¸â¹ö¸¦ º¯°æÇÑ´Ù ÇÏ´õ¶óµµ ½ÇÀμö FriendÀÇ °ªÀÌ º¯°æµÇ´Â °ÍÀº ¾Æ´Ï´Ù.

Æ÷ÀÎÅͳª ·¹ÆÛ·±½º´Â °ª ÀÚü°¡ º¹»çµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ´ÜÁö 4¹ÙÀÌÆ®¸¸ º¹»çµÇ¹Ç·Î °ª È£Ãâ¿¡ ºñÇØ ¼Óµµ°¡ ÈξÀ ´õ ºü¸£´Ù. Á¤¹ÐÇÏ°Ô ÃøÁ¤ÇØ º¸¸é ÃÖ¼ÒÇÑ ¼ö ¹è Á¤µµÀÇ Â÷À̰¡ ³ª¸ç ±¸Á¶Ã¼°¡ Å©¸é ¼ö½Ê ¹è ÀÌ»ó Â÷À̰¡ ³¯ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ ÇÔ¼ö ³»ºÎ¿¡¼­ ½ÇÀμö¸¦ Á÷Á¢ º¯°æÇÒ ¼ö ÀÖ´Ù´Â ÀÌÁ¡ÀÌ ÀÖ´Ù. OutFriendPtr, OutFriendRef ÇÔ¼ö¿¡¼­ FÀÇ °ªÀ» º¯°æÇÏ¸é ½ÇÀμö FriendÀÇ ¸â¹ö°¡ º¯°æµÈ´Ù. Æ÷ÀÎÅ͸¦ ¾²´Â ¹æ¹ý°ú ·¹ÆÛ·±½º¸¦ ¾²´Â ¹æ¹ýÀº È¿°ú´Â °ÅÀÇ µ¿ÀÏÇϸç ÇüÅ»ó ¸î °¡Áö ´Ù¸¥ Á¡¸¸ ÀÖ´Ù.

·¹ÆÛ·±½º¸¦ ¾²´Â ¹æ¹ýÀº Æ÷ÀÎÅ͸¦ ÅëÇÑ ÂüÁ¶ È£Ãâ ¹æ¹ý¿¡ ºñÇØ ÇÔ¼ö ³»ºÎ°¡ ÈξÀ ´õ ±ò²ûÇϰí Á÷°üÀûÀÌ´Ù. Æ÷ÀÎÅÍ·Î ½ÇÀμö¸¦ Á¶ÀÛÇÒ ¶§´Â ÀÏÀÏÀÌ *¸¦ ºÙ¿© *a=*a+1; °ú °°ÀÌ ÇØ¾ß ÇÏÁö¸¸ ·¹ÆÛ·±½º´Â ½ÇÀμö¿Í ¿ÏÀüÈ÷ °°À¸¹Ç·Î a=a+1;·Î ÈξÀ ´õ °£´ÜÇÏ°Ô Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ÄÚµåÀÇ ±æÀ̰¡ ±æ°í ÀÌ º¯¼ö¸¦ ÂüÁ¶Çϴ ȸ¼ö°¡ ¸¹´Ù¸é Æ÷ÀÎÅͺ¸´Ù ·¹ÆÛ·±½º°¡ ´õ Àб⠽±°í ½Ç¼ö·Î *¸¦ »©¸Ô´Â »ç°í¸¦ ¹æÁöÇÒ ¼ö ÀÖ´Ù.

±×·¯³ª ·¹ÆÛ·±½º¸¦ ÅëÇÑ ÂüÁ¶ È£Ãâ ¹æ¹ýÀº È£ÃâºÎÀÇ Çü½ÄÀÌ °ª È£Ãâ ¹æ½Ä°ú µ¿ÀÏÇØÁ®¼­ ¿ÀÈ÷·Á ´õ È¥¶õ½º·¯¿î ¸éµµ ÀÖ´Ù. plusref2(i) Çü½ÄÀ¸·Î È£ÃâÇϹǷΠÀÌ ÇÔ¼ö°¡ °ªÀ» Àü´Þ¹Þ´ÂÁö ·¹ÆÛ·±½º¸¦ Àü´Þ¹Þ´ÂÁö´Â ÇÔ¼öÀÇ ¿øÇüÀ» ºÁ¾ß¸¸ ¾Ë ¼ö ÀÖ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÌ´Â Äڵ带 Àд »ç¶÷À¸·Î ÇÏ¿©±Ý È¥¶õÀ» ´À³¢°Ô ÇÏ¸ç ¹®¼­È­Çϱ⵵ ¹«Ã´ ¹ø°Å·Ó´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù.

±×·¡¼­ ²À ÇÊ¿äÄ¡ ¾Ê´Â ÇÑ °¡±ÞÀû »ç¿ëÀ» ÀÚÀçÇÏ°í ºÒ°¡ÇÇÇÒ °æ¿ì ·¹ÆÛ·±½º¸¦ ¹Þ´Â ÇÔ¼ö´Â º¸Åë ÇÔ¼ö¸í¿¡ Ref³ª ByRef°°Àº Á¢¹Ì¸¦ ºÙ¿© È£ÃâºÎ¿¡¼­ ÇÔ¼öÀÇ Çü½ÄÀ» ½±°Ô ÆÄ¾ÇÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºÇ϶ó°í ±ÇÀ¯ÇÑ´Ù. ÂüÁ¶ È£ÃâÀÌ ²À ÇÊ¿äÇÒ °æ¿ì´Â ·¹ÆÛ·±½ºº¸´Ù´Â °¡±ÞÀûÀÌ¸é Æ÷ÀÎÅ͸¦ ³Ñ±â´Â °ÍÀÌ ´õ Á÷°üÀûÀ̶ó´Â °ÍÀÌ´Ù. ±×·¯³ª Æ÷ÀÎÅÍ¿Í ·¹ÆÛ·±½º¸¦ ³Ñ±â´Â °ÍÀº ¶Ç ´Ù¸¥ Â÷ÀÌÁ¡ÀÌ Àִµ¥ Æ÷ÀÎÅÍ´Â ÀáÀçÀûÀ¸·Î ¹è¿­À̹ǷΠÀÏ´Ü ³Ñ±â¸é ÁÖº¯À» ¸¶À½´ë·Î °Çµå¸± ¼ö ÀÖÁö¸¸ ·¹ÆÛ·±½º´Â Àü´ÞµÈ ´ë»ó¸¸ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù´Â ¸é¿¡¼­ ¿ÀÈ÷·Á ´õ ¾ÈÀü¼ºÀÌ ³ô´Ù. ·¹ÆÛ·±½ºÀÇ È¿¿ë¼º¿¡ ´ëÇØ¼­ ´Ù¼Ò ³í¶õÀÌ ÀÖ´Â ÆíÀε¥ ÇÊ¿äÇÒ ¶§´Â ¾²´Â °ÍÀÌ ÁÁ´Ù°í »ý°¢ÇÑ´Ù.

¾Õ Ç׿¡¼­ ÀÌ¹Ì ¾Ë¾Æ ºÃ´Ù½ÃÇÇ »ó¼ö´Â ·¹ÆÛ·±½ºÀÇ ´ë»óü°¡ µÉ ¼ö ¾ø´Ù. ¸¶Âù°¡Áö·Î ·¹ÆÛ·±½º Àμö¸¦ »ç¿ëÇÏ´Â ÇÔ¼ö·Î´Â »ó¼ö¸¦ Àü´ÞÇÒ ¼ö ¾ø´Ù. ·¹ÆÛ·±½º´Â Áº¯°ªÀÎ º¯¼ö¸¦ ´ë»óü·Î ÃëÇÏ¸ç »ó¼öÀÇ º°¸íÀÌ µÉ ¼ö ¾øÀ¸¹Ç·Î plusref2(5)¿Í °°ÀÌ È£ÃâÇÏ´Â °ÍÀº Çã¿ëµÇÁö ¾Ê´Â´Ù. »ó¼ö 5¿¡ ´ëÇÑ ·¹ÆÛ·±½º´Â ¸¸µé ¼öµµ ¾ø°í ÇÔ¼ö ³»¿¡¼­ ÀÌ °ªÀ» º¯°æÇÒ ¼öµµ ¾ø±â ¶§¹®ÀÌ´Ù. »Ó¸¸ ¾Æ´Ï¶ó plusref2(i+j) °°Àº ¼ö½Äµµ Àü´ÞÇÒ ¼ö ¾ø´Ù.

¸¸¾à plusref2 ÇÔ¼öÀÇ Àμö°¡ »ó¼ö Áö½Ã ·¹ÆÛ·±½º¶ó¸é, Áï ¿øÇüÀÌ void plusref2(const int &a) Çü½ÄÀ̶ó¸é »ó¼ö³ª ¼ö½ÄÀ» Àü´ÞÇÒ ¼ö´Â ÀÖ´Ù. ±×·¯³ª ÀÌ °æ¿ì ÇÔ¼ö ³»ºÎ¿¡¼­ Àü´ÞµÈ Àμö°ªÀ» º¯°æÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù. ¶ÇÇÑ Çü½Ä Àμö¿Í ŸÀÔÀÌ Á¶±Ý¸¸ Ʋ·Áµµ ¾ÈµÇ¸ç ¿ÏÀüÈ÷ µ¿ÀÏÇÑ Å¸ÀÔÀÇ ½ÇÀμö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. µû¶ó¼­ ´ÙÀ½ È£Ãâ¹®Àº ¿¡·¯·Î 󸮵ȴÙ.

 

short s=5;

plusref2(s);

 

plusref2 ÇÔ¼ö´Â Á¤¼öÇü ·¹ÆÛ·±½º¸¸ ¹Þ¾ÆµéÀÏ ¼ö ÀÖÀ¸¹Ç·Î shortÇü ·¹ÆÛ·±½º¸¦ ³Ñ±æ ¼ö´Â ¾ø´Ù. ¾î¶² ÄÄÆÄÀÏ·¯´Â ·¹ÆÛ·±½º Àμö·Î »ó¼ö³ª ȣȯ ŸÀÔÀÌ Àü´ÞµÉ °æ¿ì Àӽà º¯¼ö¸¦ »ý¼ºÇϱ⵵ ÇÏÁö¸¸ ºñÁÖ¾ó C++Àº Àӽà º¯¼ö¸¦ »ý¼ºÇÏÁö ¾Ê´Â´Ù. ÀÌ¿¡ ºñÇØ °ªÀ» Àü´Þ¹Þ´Â ÇÔ¼ö´Â º¯¼ö³ª »ó¼ö ½ÉÁö¾î ¼ö½Äµµ ¹Þ¾ÆµéÀÏ ¼ö ÀÖÀ¸¸ç ŸÀÔÀÌ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏÁö ¾Ê´õ¶óµµ ÄÄÆÄÀÏ·¯°¡ ³»ºÎÀûÀÎ º¯È¯¿¡ ÀÇÇØ ŸÀÔÀ» ¸ÂÃá ÈÄ È£ÃâÇϹǷΠÈξÀ ´õ Ȱ¿ëµµ°¡ ³ô´Ù. ±×·¡¼­ µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼ö¶ó¸é ·¹ÆÛ·±½º º¸´Ù´Â °ªÀ» Àü´Þ¹Þ´Â ÇÔ¼ö¸¦ ¸¸µå´Â °ÍÀÌ ¿øÄ¢À̸ç À¯¸®ÇÏ´Ù.