Àμö¶õ È£Ãâ¿ø¿¡¼ ÇÔ¼ö¿¡°Ô ÀÏÀ» ½Ã۱â À§ÇÑ Á¤º¸Àε¥ Àμö¸¦ ¾î¶»°Ô Àü´ÞÇϴ°¡¿¡ µû¶ó °ª È£Ãâ(call by value) ¹æ½Ä°ú ÂüÁ¶ È£Ãâ(call by reference) ¹æ½ÄÀÌ ÀÖ´Ù. Àμö¸¦ ³Ñ±â´Â ¹æ½Ä¿¡ µû¶ó ½ÇÀμöÀÇ °ªÀÌ º¯°æµÇ´Â°¡ ¾Æ´Ñ°¡ÀÇ Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. ´Ù¼Ò ¾î·Á¿ï ¼öµµ ÀÖÁö¸¸ ÇÔ¼ö¸¦ ÀÌÇØÇϴµ¥ ¾ÆÁÖ Áß¿äÇÑ ³»¿ëÀ̹ǷΠÀß ¾Ë¾Æ µÎµµ·Ï ÇÏÀÚ.
¸ÕÀú °ª È£Ãâ¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. °ª È£Ãâ ¹æ½ÄÀ̶õ ½ÇÀμöÀÇ °ªÀÌ Çü½Ä Àμö·Î Àü´ÞµÇ´Â ¹æ½ÄÀÌ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ plusone ÇÔ¼ö´Â ÇϳªÀÇ Á¤¼ö°ªÀ» Àü´Þ¹Þ¾Æ ±× °ª¿¡ 1À» ´õÇÑ °ªÀ» ¸®ÅÏÇÑ´Ù. 1À» ´õÇÑ °ªÀÌ¾ß º¯¼ö¿¡ +1ÇÏ¸é ½±°Ô ±¸ÇÒ ¼ö ÀÖÁö¸¸ È£Ãâ ¹æ½ÄÀÇ Â÷ÀÌÁ¡À» º¸±â À§ÇØ ÀǵµÀûÀ¸·Î ÇÔ¼ö·Î ¸¸µé¾î º¸¾Ò´Ù.
|
¿¹ Á¦ : CallValue |
#include <Turboc.h>
int plusone(int a);
void main()
{
int i,j;
i=5;
j=plusone(i);
printf("i=%d, °á°ú=%d\n",i,j);
}
int plusone(int a)
{
a=a+1;
return a;
}
main¿¡¼ Á¤¼öÇü º¯¼ö i¸¦ ¼±¾ðÇϰí ÀÌ º¯¼ö¿¡ 5¸¦ ´ëÀÔÇß´Ù. ±×¸®°í plusone(i)¸¦ È£ÃâÇϸé Çü½Ä Àμö a°¡ ÀÌ °ªÀ» ´ëÀԹ޴´Ù. ÀÌ ÇÔ¼ö¿¡ ÀÇÇØ a°ª¿¡ 1À» ´õÇÑ °ªÀÌ ¸®ÅϵǴµ¥ a·Î Àü´ÞµÈ °ªÀÌ 5¿´À¸¹Ç·Î °á°ú´Â 6ÀÌ µÉ °ÍÀÌ´Ù. main¿¡¼´Â ÀÌ °ªÀ» j¿¡ ´ëÀÔÇÑ ÈÄ Ãâ·ÂÇßÀ¸¹Ç·Î ÇÁ·Î±×·¥ ÀüüÀÇ ½ÇÇà °á°ú´Â "i=5, °á°ú=6"ÀÌ µÈ´Ù.
Çü½Ä Àμö a°¡ ´ëÀÔ¹Þ´Â ´ë»óÀÌ mainÀÇ ½ÇÀμö iÀÇ °ªÀ̱⠶§¹®¿¡ ÀÌ·± È£Ãâ ¹æ½ÄÀ» °ª È£ÃâÀ̶ó°í ÇÑ´Ù. a´Â plusoneÀ¸·Î Àü´ÞµÈ ½ÇÀμöÀÇ Àӽà »çº»À̶ó°í ÇÒ ¼ö Àִµ¥ ½ÇÀμö i¿Í´Â ÀüÇô ´Ù¸¥ »õ·Î¿î º¯¼öÀÌ´Ù. ÇÔ¼ö È£Ãâ Á÷ÈÄ¿¡ iÀÇ °ªÀ» ´ëÀÔ¹Þ¾ÒÀ¸¹Ç·Î ÀϽÃÀûÀ¸·Î i¿Í °°Àº °ªÀ» °¡Áö°í ÀÖÀ» »ÓÀÌÁö i¿Í´Â ¾Æ¿¹ ±â¾ïµÇ´Â ¸Þ¸ð¸® °ø°£ ÀÚü°¡ ´Ù¸£´Ù.
plusone ÇÔ¼ö¿¡¼ aÀÇ °ªÀ» 1 Áõ°¡½ÃÄ×Áö¸¸ main¿¡ ÀÖ´Â ½ÇÀμö iÀÇ °ªÀÌ ¹Ù²î´Â °ÍÀº ¾Æ´Ï´Ù. a°¡ iÀÇ °ªÀ» ´ëÀÔ¹Þ¾ÒÁö¸¸ a¸¦ ¾î¶»°Ô ¹Ù²Ù´õ¶óµµ iÀÇ °ªÀº ÀüÇô ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. a´Â ¾îµð±îÁö³ª »çº»¿¡ ºÒ°úÇϹǷΠ»çº»ÀÌ Áõ°¡ÇÏµç °¨¼ÒÇÏµç ¿øº»¿¡ ¿µÇâÀ» ÁÖÁö ¸øÇÑ´Ù. plusoneÀº 1Áõ°¡½ÃŲ aÀÇ °ªÀ» ¸®ÅÏÇß°í mainÀº ÀÌ ¸®ÅϰªÀ» º°µµÀÇ º¯¼ö j¿¡ ´ëÀÔÇÔÀ¸·Î½á i¸¦ 1Áõ°¡½ÃŲ °á°ú¸¦ ÃëÇß´Ù.

ÇÔ¼ö È£Ãâ½Ã Àü´ÞµÇ´Â ´ë»óÀÌ ½ÇÀμö ±× ÀÚü°¡ ¾Æ´Ï¶ó ½ÇÀμöÀÇ °ªÀ̱⠶§¹®¿¡ ÀÌ·± È£Ãâ ¹æ½ÄÀ» °ª È£ÃâÀ̶ó°í ºÎ¸¥´Ù. °ª È£ÃâÀÇ Æ¯Â¡Àº Çü½Ä Àμö°¡ ÇÔ¼ö³»¿¡¼ º¯°æµÇ´õ¶óµµ ½ÇÀμö¿¡´Â ÀüÇô ¿µÇâÀ» ¹ÌÄ¡Áö ¸øÇÑ´Ù´Â °ÍÀÌ´Ù.