º¯¼ö³ª ÇÔ¼ö, ÅÂ±× °°Àº ¸íĪÀº »óÈ£ ±¸ºÐµÇ¾î¾ß ÇϹǷΠÁߺ¹µÇ¾î¼´Â ¾ÈµÈ´Ù. ±×·¡¼ °°Àº À̸§À» °¡Áø µÎ °³ÀÇ º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö ¾ø´Ù. ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ¸é ¿¡·¯·Î 󸮵ȴÙ.
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++¿¡¼ ´Ù½Ã ´Ù·ç°Ô µÉ °ÍÀÌ´Ù. Åë¿ë ¹üÀ§ ±ÔÄ¢Àº ¾ÆÁÖ »ó½ÄÀûÀ̱⠶§¹®¿¡ ºñ±³Àû ÀÌÇØÇϱ⠽±´Ù. ¿ä¾àÇÏÀÚ¸é "°°Àº Åë¿ë ¹üÀ§³»¿¡¼´Â ¸íĪÀÌ Áߺ¹µÉ ¼ö ¾øÀ¸¸ç Àü¿ª, Áö¿ª ¸íĪÀÌ Áߺ¹µÈ °æ¿ì´Â Áö¿ªÀÌ ¿ì¼±ÀÌ´Ù"¶ó°í ÇÒ ¼ö ÀÖ´Ù.