7-3.Åë¿ë ¹üÀ§

7-3-°¡.Åë¿ë ¹üÀ§ ±ÔÄ¢

º¯¼ö³ª ÇÔ¼ö, ÅÂ±× °°Àº ¸íĪÀº »óÈ£ ±¸ºÐµÇ¾î¾ß ÇϹǷΠÁߺ¹µÇ¾î¼­´Â ¾ÈµÈ´Ù. ±×·¡¼­ °°Àº À̸§À» °¡Áø µÎ °³ÀÇ º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö ¾ø´Ù. ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ¸é ¿¡·¯·Î 󸮵ȴÙ.

 

void main()

{

     int i;

     double i;

 

i¶ó´Â ¸íĪÀ¸·Î Á¤¼öÇü º¯¼ö¿Í ½Ç¼öÇü º¯¼ö¸¦ µ¿½Ã¿¡ ¼±¾ðÇß´Ù. ÀÌÀ¯¸¦ ¼³¸íÇÒ ÇÊ¿äµµ ¾øÀÌ ÀÌ ÄÚµå´Â ¿¡·¯·Î 󸮵ȴÙ.

 

'i' : redefinition; different basic types

 

i¶ó´Â ¸íĪÀÌ Á¤¼öÇüÀ¸·Î ¼±¾ðµÇ¾ú´Ù°¡ ½Ç¼öÇüÀ̶ó´Â ´Ù¸¥ ŸÀÔÀ¸·Î Áߺ¹ ¼±¾ðµÇ¾ú´Ù´Â ¶æÀÌ´Ù. À̸§ÀÌ Áߺ¹µÇ¸é ´ÙÀ½¿¡ i¸¦ ÂüÁ¶ÇÒ ¶§ Á¤¼öÇü º¯¼ö i¸¦ ÀǹÌÇÏ´Â °ÍÀÎÁö ½Ç¼öÇü º¯¼ö i¸¦ ÀǹÌÇÏ´Â °ÍÀÎÁö ±¸ºÐÇÒ ¼ö ¾ø´Â ¸ðÈ£ÇÔÀÌ ¹ß»ýÇÒ °ÍÀÌ´Ù. ÄÄÇ»ÅÍ ÇÁ·Î±×·¥ÀÇ ³í¸®¿¡ ¸ðÈ£ÇÔÀ̶õ Àý´ë ÀÖÀ» ¼ö ¾øÀ¸¹Ç·Î ¸íĪÀÇ Áߺ¹Àº Çã¶ôµÇÁö ¾Ê´Â´Ù.

¸íĪÀÌ Áߺ¹µÇÁö ¸»¾Æ¾ß ÇÑ´Ù´Â °ÍÀº Áö±ØÈ÷ »ó½ÄÀûÀÌ´Ù. ±×·¯³ª ÀÌ ¹ýÄ¢¿¡ ¿¹¿Ü°¡ Àִµ¥ Åë¿ë ¹üÀ§°¡ ´Ù¸¥ ¸íĪ³¢¸®´Â °°Àº À̸§À» °¡Áú ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

 

void func()

{

     int i;

     ....

 

void proc()

{

     double i;

     ....

 

func ÇÔ¼ö¿¡¼­´Â i¸¦ Á¤¼öÇüÀ¸·Î ¼±¾ðÇß°í proc ÇÔ¼ö¿¡¼­´Â °°Àº À̸§ÀÇ i¸¦ ½Ç¼öÇüÀ¸·Î ¼±¾úÇßÁö¸¸ ³í¸®ÀûÀ¸·Î ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. µÑ ´Ù Áö¿ªº¯¼öÀÌ°í Åë¿ë ¹üÀ§°¡ ºÐ¸íÈ÷ ´Ù¸£±â ¶§¹®¿¡ °°Àº ¸íĪ i¸¦ ÂüÁ¶ÇÏ´õ¶óµµ func ÇÔ¼ö¿¡¼­´Â Á¤¼öÇüÀ¸·Î, proc ÇÔ¼ö¿¡¼­´Â ½Ç¼öÇüÀ¸·Î ±¸ºÐÇÒ ¼ö ÀÖ¾î ¸ðÈ£ÇÔÀÌ ¹ß»ýÇÏÁö ¾Ê´Â´Ù.

À§ Äڵ尡 ¾Æ¹«·± ¹®Á¦°¡ ¾ø´Ù´Â °ÍÀº ¾Æ¸¶ ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù. ÀÌ·± °æ¿ì ¿Ü¿¡ Ư¼öÇÑ °æ¿ì´Â µÎ º¯¼öÀÇ Åë¿ë ¹üÀ§°¡ °ãÃÄ ÀÖÀ» ¶§Àε¥ °°Àº ¸íĪÀ¸·Î ¼±¾ðµÈ Àü¿ªº¯¼ö¿Í Áö¿ªº¯¼öÀÇ °ü°è°¡ ÀÌ·± °æ¿ì¿¡ ÇØ´çµÈ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

¿¹ Á¦ : Scope

#include <Turboc.h>

 

void func() ;

int i=3;

 

void main()

{

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

     func();

}

 

void func()

{

     int i=5;

 

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

}

 

main¿¡¼­ i°ªÀ» ÇÑ ¹ø Ãâ·ÂÇß°í func¿¡¼­ ´Ù½Ã ÇÑ ¹ø i°ªÀ» Ãâ·ÂÇß´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

i=3

i=5

 

Àü¿ªº¯¼ö i°¡ 3À¸·Î Á¤ÀǵǾî ÀÖ°í func ÇÔ¼ö¿¡¼­ Áö¿ªº¯¼ö i¸¦ °°Àº À̸§À¸·Î ¼±¾ðÇÏ¿© 5·Î ÃʱâÈ­ÇÏ¿´´Ù. Àü¿ª i´Â ¸ðµç ÇÔ¼ö¿¡¼­ Åë¿ë °¡´ÉÇϹǷΠmain ÇÔ¼ö¿¡¼­ ´ç¿¬È÷ ÀÌ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. func ÇÔ¼ö¿¡¼­´Â Àü¿ª i¿Í Áö¿ª i°¡ µ¿½Ã¿¡ Á¸ÀçÇϹǷΠÀÌ ÇÔ¼ö¿¡¼­ i¸¦ ÂüÁ¶ÇÏ¸é ¾î¶² i¸¦ ÀǹÌÇÏ´ÂÁö ¸ðÈ£ÇÔÀÌ ¹ß»ýÇÏ°Ô µÈ´Ù.

±×·¯³ª ÀÌ »óȲÀº ¿¡·¯·Î 󸮵ÇÁö ¾Ê´Âµ¥ ÄÄÆÄÀÏ·¯´Â ÇϳªÀÇ ¸íĪ¿¡ ´ëÇØ Åë¿ë ¹üÀ§°¡ °ãÃÄ ÀÖÀ» °æ¿ì Á¼Àº ¹üÀ§¸¦ °¡Áö´Â ¸íĪ¿¡°Ô ¿ì¼±±ÇÀ» ÁÜÀ¸·Î½á ¸ðÈ£ÇÑ »óȲÀ» ±Øº¹ÇÑ´Ù. ±ÔÄ¢À» ¸¶·ÃÇÏ°í ÀÌ ±ÔÄ¢´ë·Î µ¿ÀÛÇÏ¸é ¸ðÈ£ÇÏÁö ¾Ê´Ù. À§ ¿¹¿¡¼­ func ÇÔ¼ö ³»¿¡¼­ i º¯¼ö¸¦ ÂüÁ¶Çϸé ÀÌ´Â Áö¿ªº¯¼ö i¸¦ ÀǹÌÇÑ´Ù. Àüü°¡ ¼ÒÀ¯ÇÏ´Â Àü¿ª iº¸´Ù´Â func ÇÔ¼ö¿¡°Ô ¼Ò¼ÓµÈ Áö¿ª i¸¦ ÂüÁ¶ÇÏ´Â °ÍÀÌ ³í¸®ÀûÀ¸·Î ÇÕ´çÇÏ´Ù. ±×·¡¼­ mainÀÌ Ãâ·ÂÇÏ´Â i´Â Àü¿ªº¯¼öÀ̸ç 3ÀÇ °ªÀ» °¡Áö°í func°¡ Ãâ·ÂÇÏ´Â i´Â ÀÚ½ÅÀÇ Áö¿ªº¯¼öÀ̸ç 5ÀÇ °ªÀ» °¡Áö´Â °ÍÀÌ´Ù.

C ¾ð¾î¿¡¼­´Â Àü¿ªº¯¼ö¿Í Áö¿ªº¯¼öÀÇ À̸§ÀÌ Áߺ¹µÉ ¶§ Áö¿ªº¯¼ö°¡ ¼±¾ðµÈ ÇÔ¼ö¿¡¼­ Àü¿ªº¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø´Ù. À§ ¿¹ÀÇ func ÇÔ¼ö´Â Àü¿ªº¯¼ö i¸¦ Àаųª ÂüÁ¶ÇÒ ¼ö ¾ø´Âµ¥ Àü¿ª i°¡ Áö¿ª i¿¡ ÀÇÇØ ¿ÏÀüÈ÷ °¡·ÁÁ® Àֱ⠶§¹®ÀÌ´Ù. º¯¼ö°¡ ¾ÆÁ÷ Á¸ÀçÇÏÁö¸¸ °¡·ÁÁ® ÀÖ¾î ¾µ ¼ö ¾ø´Â »óÅÂÀ̸ç ÀÌ »óȲÀ» °¡½Ã¼º(Visibility)ÀÌ ¾ø´Ù°í Ç¥ÇöÇÑ´Ù. ±×·¯³ª C++¿¡¼­´Â °¡·ÁÁ® ÀÖ´Â Àü¿ªº¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â º°µµÀÇ ¹üÀ§ ¿¬»êÀÚ ::À» »ç¿ëÇϸé Àü¿ª i¸¦ ÀÐÀ» ¼ö ÀÖ´Ù. func ÇÔ¼öÀÇ ³¡¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇØ º¸ÀÚ.

 

printf("global i=%d\n",::i);

 

::i¶ó´Â ¸íĪÀº Àü¿ªº¯¼ö i¶ó´Â ¶æÀÌ´Ù. :: ¿¬»êÀÚ¿¡ ´ëÇؼ­´Â Â÷ÈÄ¿¡ C++¿¡¼­ ´Ù½Ã ´Ù·ç°Ô µÉ °ÍÀÌ´Ù. Åë¿ë ¹üÀ§ ±ÔÄ¢Àº ¾ÆÁÖ »ó½ÄÀûÀ̱⠶§¹®¿¡ ºñ±³Àû ÀÌÇØÇϱ⠽±´Ù. ¿ä¾àÇÏÀÚ¸é "°°Àº Åë¿ë ¹üÀ§³»¿¡¼­´Â ¸íĪÀÌ Áߺ¹µÉ ¼ö ¾øÀ¸¸ç Àü¿ª, Áö¿ª ¸íĪÀÌ Áߺ¹µÈ °æ¿ì´Â Áö¿ªÀÌ ¿ì¼±ÀÌ´Ù"¶ó°í ÇÒ ¼ö ÀÖ´Ù.