Á¤Àûº¯¼ö(Static Variable)´Â Àü¿ªº¯¼ö¿Í Áö¿ªº¯¼öÀÇ ¼º°ÝÀ» µ¿½Ã¿¡ °¡Áö´Â Á» Ưº°ÇÑ ±â¾ï ºÎ·ùÀÌ´Ù. ¾ÕÀÇ µµÇ¥¿¡ ±â·ÏµÇ¾î ÀÖ´Â Á¤Àûº¯¼öÀÇ Æ¯Â¡µéÀ» »ìÆìº¸ÀÚ.
¡á ¼±¾ð À§Ä¡´Â Áö¿ªº¯¼ö¿Í ¸¶Âù°¡Áö·Î ÇÔ¼öÀÇ ¼±µÎÀÌ´Ù.
¡á Åë¿ë ¹üÀ§´Â Áö¿ªº¯¼ö¿Í ¸¶Âù°¡Áö·Î ÇÔ¼ö ³»ºÎ·Î ±¹ÇѵȴÙ.
¡á ÀúÀå Àå¼Ò´Â Àü¿ªº¯¼ö°¡ ÀúÀåµÇ´Â Á¤Àû µ¥ÀÌÅÍ ¿µ¿ªÀÌ´Ù.
¡á Á¤Àû µ¥ÀÌÅÍ ¿µ¿ª¿¡ ÀúÀåµÇ¹Ç·Î ÇÁ·Î±×·¥ ½ÇÇàÁß¿¡ Ç×»ó Á¸ÀçÇÑ´Ù.
¡á ÃʱⰪ ÁöÁ¤ÀÌ ¾øÀ¸¸é 0À¸·Î Ãʱâȵǰí ÇÁ·Î±×·¥ ½ÇÇà½Ã ´Ü ÇÑ ¹ø¸¸ ÃʱâȵȴÙ.
Á¤Àûº¯¼öÀÇ ¼ºÁúÀ» ¿ä¾àÇÏÀÚ¸é ÀúÀå Àå¼Ò´Â Àü¿ªº¯¼öÀÌµÇ Åë¿ë ¹üÀ§´Â Áö¿ªº¯¼ö¶ó ÇÒ ¼ö ÀÖ´Ù. Á¤Àûº¯¼ö¸¦ ¼±¾ðÇÒ ¶§´Â ¹Ýµå½Ã staticÀ̶ó´Â ÁöÁ¤ÀÚ¸¦ ºÙ¿©¾ß ÇÑ´Ù.
static int i;
static double d;
ÀÌ·¸°Ô ¼±¾ðÇϸé i³ª d´Â Á¤Àûº¯¼ö°¡ µÇ¾î Á¤Àû µ¥ÀÌÅÍ ¿µ¿ª¿¡ ÀúÀåµÇ¸ç Åë¿ë ¹üÀ§´Â ¼±¾ð¹®ÀÌ ÀÖ´Â ÇÔ¼ö ³»ºÎ·Î ±¹ÇѵȴÙ. ƯÁ¤ ÇÔ¼ö¸¸ »ç¿ëÇ쵂 ±× °ªÀ» °è¼Ó À¯ÁöÇÒ Çʿ䰡 ÀÖÀ» ¶§ Á¤Àûº¯¼ö¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦°¡ Á¤Àûº¯¼ö¸¦ »ç¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ ¿¹ÀÌ´Ù.
|
¿¹ Á¦ : Static |
#include <Turboc.h>
void PrintCount();
void main()
{
int i;
for (i=0;i<5;i++) {
PrintCount();
}
}
void PrintCount()
{
static int count=0;
count++;
printf("Àú´Â %d¹øÂ°·Î È£ÃâµÇ¾ú½À´Ï´Ù.\n",count);
}
PrintCount ÇÔ¼ö´Â ÀÌ ÇÔ¼ö°¡ È£ÃâµÈ ȸ¼ö¸¦ ȸéÀ¸·Î Ãâ·ÂÇϴµ¥ ÀÚ½ÅÀÌ È£ÃâµÈ ȸ¼ö¸¦ count¶ó´Â º¯¼ö¿¡ ÀúÀåÇϰí ÀÖ´Ù. ÃÖÃÊ count´Â 0À¸·Î Ãʱâȵǰí PrintCount°¡ ÇÑ ¹ø È£ÃâµÉ ¶§¸¶´Ù 1¾¿ Áõ°¡Çϵµ·Ï µÇ¾î ÀÖ´Ù. main¿¡¼ ÀÌ ÇÔ¼ö¸¦ ´Ù¼¸ ¹ø È£ÃâÇÏ¸ç ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
Àú´Â 1¹øÂ°·Î È£ÃâµÇ¾ú½À´Ï´Ù.
Àú´Â 2¹øÂ°·Î È£ÃâµÇ¾ú½À´Ï´Ù.
Àú´Â 3¹øÂ°·Î È£ÃâµÇ¾ú½À´Ï´Ù.
Àú´Â 4¹øÂ°·Î È£ÃâµÇ¾ú½À´Ï´Ù.
Àú´Â 5¹øÂ°·Î È£ÃâµÇ¾ú½À´Ï´Ù.
count º¯¼ö´Â PrintCount ÇÔ¼ö ³»ºÎ¿¡¼¸¸ »ç¿ëµÇ¹Ç·Î ÀÌ ÇÔ¼ö ¹Û¿¡¼´Â ÂüÁ¶ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù. ÇÏÁö¸¸ ±×·¸´Ù°í ÇØ¼ count¸¦ Áö¿ªº¯¼ö·Î ¼±¾ðÇØ¼´Â ¾ÈµÇ´Âµ¥ Áö¿ªº¯¼ö´Â ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù ½ºÅÿ¡ ´Ù½Ã »ý¼ºµÇ°í ÇÔ¼ö°¡ ³¡³¯ ¶§ ÆÄ±«µÇ¾î ¹ö¸®¹Ç·Î °ªÀ» °è¼Ó À¯ÁöÇÒ ¼ö ¾ø´Ù. È£Ãâ ȸ¼ö¸¦ ±â¾ïÇÏ´Â Ä«¿îÆ® º¯¼ö°¡ Á¦ ±â´ÉÀ» ´Ù ÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù. ¶Ç ±×·¸´Ù°í ÇØ¼ count¸¦ Àü¿ªº¯¼ö·Î ¼±¾ðÇϸé PrintCount ÀÌ¿ÜÀÇ ÇÔ¼ö¿¡¼µµ ÀÌ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ°Ô µÇ¹Ç·Î ÇÔ¼öÀÇ µ¶¸³¼ºÀ» ÇìÄ¡°Ô µÈ´Ù.
±×·¡¼ ±â¾ï Àå¼Ò´Â Àü¿ªÀûÀ̰í Åë¿ë ¹üÀ§´Â Áö¿ªÀûÀÎ Á¤Àûº¯¼ö·Î ¼±¾ðÇÑ °ÍÀÌ´Ù. Á¤Àûº¯¼ö·Î ¼±¾ðÇϸé ÇÔ¼ö°¡ ³¡³ªµµ °ªÀÌ ÆÄ±«µÇÁö ¾Ê°í °è¼Ó À¯ÁöµÇ¹Ç·Î Ä«¿îÆ®·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ Åë¿ë ¹üÀ§°¡ ÇÔ¼ö ³»ºÎ·Î ±¹ÇѵǹǷΠ¿ÜºÎ¿¡¼ ÀÌ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾øÀ¸¸ç µð¹ö±ë½Ã¿¡µµ ¹®Á¦°¡ µÇÁö ¾Ê°í ÀÌ ÇÔ¼ö¸¦ ´Ù¸¥ ÇÁ·ÎÁ§Æ®·Î °¡Á®°¡ ½±°Ô Àç»ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
º¸´Ù½ÃÇÇ Á¤Àûº¯¼ö´Â Áö¿ªº¯¼ö¿Í Àü¿ªº¯¼öÀÇ ÀåÁ¡À» ¸ðµÎ °¡Áö´Â Á¶±Ý ƯÀÌÇÑ ±â¾ï ºÎ·ùÀÌ´Ù. À§ ¿¹Á¦Ã³·³ °è¼Ó Áõ°¡ÇÏ´Â Ä«¿îÆ® °ªÀ̳ª ÃÖÈÄ ½ÇÇà °á°ú¸¦ ÇÔ¼ö ½º½º·Î°¡ º¸À¯Çϵµ·Ï ÇÏ°í ½ÍÀ» ¶§ Á¤Àûº¯¼ö¸¦ »ç¿ëÇÑ´Ù. Á¤Àûº¯¼ö¸¦ Àß »ç¿ëÇÏ¸é ±¸Á¶ÀûÀ¸·Îµµ ưưÇÏ°í µð¹ö±ë¿¡µµ À¯¸®ÇÑ ÁÁÀº Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
Á¤Àûº¯¼ö¿¡¼ ÇѰ¡Áö À¯ÀÇÇÒ Á¡Àº ÀÌ º¯¼ö°¡ ¾ðÁ¦ ÃʱâȵǴ°¡ ÇÏ´Â Á¡ÀÌ´Ù. ÇÔ¼ö ¼±µÎ¿¡¼ Á¤Àûº¯¼ö¸¦ ¼±¾ðÇϰí ÀÖÀ¸¹Ç·Î ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù Ãʱâ鵃 °Í °°Áö¸¸ ±×·¸Áö ¾ÊÀ¸¸ç ÇÔ¼ö°¡ ÃÖÃʷΠȣÃâµÉ ¶§ ´Ü ÇÑ ¹ø¸¸ ÃʱâȵȴÙ. »ç½Ç Ãʱâȶó´Â ¸» ÀÚü¿¡ ÀÌ¹Ì ÀÏȸ¼ºÀÇ Àǹ̰¡ ³»Æ÷µÇ¾î ÀÖÁö ¾ÊÀº°¡? À§ ¿¹¿¡¼ count=0;À¸·Î ÃʱâȵǴ Äڵ尡 PrintCount ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù ½ÇÇàµÈ´Ù¸é ÀÌ º¯¼ö°¡ °ªÀ» °è¼Ó À¯ÁöÇÏÁö ¸øÇÒ °ÍÀÌ´Ù.
¶Ç ¸¸¾à Á¤Àûº¯¼ö ¼±¾ð¹®¿¡¼ Ãʱâȸ¦ ÇÏÁö ¾ÊÀ¸¸é Àü¿ªº¯¼ö¿Í ¸¶Âù°¡Áö·Î 0À¸·Î ÀÚµ¿ ÃʱâȵȴÙ. ±×·¡¼ À§ ¿¹Á¦ÀÇ count ¼±¾ð¹®¿¡¼ ÃʱâÈ ºÎºÐÀº »©°í static int count;¶ó°í ¼±¾ðÇØµµ count´Â 0À¸·Î ÃʱâȵȴÙ. ÇÔ¼ö ³»ºÎ¿¡¼ Å« ¹è¿À» ¼±¾ðÇϰí ÃʱâÈÇÒ ¶§´Â ÃʱâÈ ½Ã°£À» Àý¾àÇϱâ À§ÇØ Á¤ÀûÀ¸·Î ¼±¾ðÇÏ¿© ÇÑ ¹ø¸¸ ÃʱâÈÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù Å« ¹è¿ÀÌ ¸Å¹ø »ý¼º, ÃʱâÈ, ÆÄ±«¸¦ ¹Ýº¹ÇϹǷΠ´À·ÁÁø´Ù.
PrintCount ¿¹Á¦¿¡¼¿Í °°ÀÌ ÇÔ¼ö ³»ºÎ¿¡¼ ¼±¾ðµÈ Á¤Àûº¯¼ö¸¦ ³»ºÎ Á¤Àûº¯¼ö¶ó°í ÇÑ´Ù. Á¤Àûº¯¼ö´Â ±× Ư¼º»ó ƯÁ¤ ÇÔ¼ö Àü¿ëÀ¸·Î ¼±¾ðÇÏ´Â °æ¿ì°¡ ¸¹±â ¶§¹®¿¡ º¸Åë Á¤Àûº¯¼ö¶ó°í ÇÏ¸é ³»ºÎ Á¤Àûº¯¼ö¸¦ ÀǹÌÇÑ´Ù. ÈçÇÏÁö´Â ¾ÊÁö¸¸ ÇÔ¼ö ¿ÜºÎ¿¡¼µµ Á¤Àûº¯¼ö¸¦ ¼±¾ðÇÒ ¼ö Àִµ¥ ÀÌ·¸°Ô ¼±¾ðµÈ º¯¼ö¸¦ ¿ÜºÎ Á¤Àûº¯¼ö¶ó°í ÇÑ´Ù. ¿ÜºÎ Á¤Àûº¯¼ö´Â ƯÁ¤ ÇÔ¼ö¿¡ ¼Ò¼ÓµÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î ÀϹÝÀûÀ¸·Î Àü¿ªº¯¼ö¿Í °°Àº ¼ºÁúÀ» °¡Áø´Ù.
´Ù¸¸ Àü¿ªº¯¼ö¿Í ´Ù¸¥ Á¡Àº extern ¼±¾ð¿¡ ÀÇÇØ ¿ÜºÎ ¸ðµâ·Î ¾Ë·ÁÁöÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. Áï ÀÚ½ÅÀÌ ¼±¾ðµÈ ¸ðµâ¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµâ Àü¿ªº¯¼ö°¡ µÈ´Ù. ¾ÕÀÇ Extern2 ¿¹Á¦¿¡¼ global.cppÀÇ value º¯¼ö ¼±¾ð¹®À» static int value=1234; ¶ó°í ¼öÁ¤Çϸé global.cpp ¿ÜºÎ¿¡¼ extern ¼±¾ðÀ» ÇÏ´õ¶óµµ ÀÌ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø°Ô µÈ´Ù.
Àü¿ªº¯¼öÀ̸鼵µ ¿ÜºÎ¿¡ ¾Ë·Á¼´Â ¾ÈµÇ´Â ±×·± º¯¼ö°¡ ÇÊ¿äÇÒ ¶§ ¿ÜºÎ Á¤Àûº¯¼ö¸¦ »ç¿ëÇÑ´Ù. ÁÖ·Î ¸ðµâÀÇ ÀçȰ¿ë¼ºÀ» ³ôÀ̱â À§ÇØ »ç¿ëÇϴµ¥ ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾î º¸ÀÚ. ±×·¡ÇÈ °ü·Ã ÇÔ¼öµéÀ» Á¦°øÇÏ´Â graphic.cpp¿Í graphic.h¸¦ ¾ÆÁÖ °øµé¿©¼ Á¦ÀÛÇߴµ¥ ÀÌ ¸ðµâ¿¡¼ mode, color °°Àº Àü¿ªº¯¼ö¸¦ »ç¿ëÇϰí ÀÖ´Ù°í ÇÏÀÚ. ÀÌ ¸ðµâÀ» ¾²°í ½ÍÀº »ç¶÷ÀÌ graphic.* ÆÄÀϸ¸ º¹»çÇØ¼ »ç¿ëÇÏ¸é µÇµµ·Ï ÇÏ°í ½Í´Ù.
±×·±µ¥ ÀÌ ¸ðµâÀ» »ç¿ëÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡ ÀÌ¹Ì mode, color¶ó´Â Àü¿ªº¯¼ö°¡ »ç¿ëµÇ°í ÀÖ´Ù¸é ¸íĪÀÇ Ãæµ¹ÀÌ ¹ß»ýÇÏ°Ô µÉ °ÍÀÌ°í ¾çÂÊ Áß Çϳª´Â º¯¼öÀÇ À̸§À» ¹Ù²Ù¾î¾ß ÇÑ´Ù. ÀÌ·² ¶§ mode, color º¯¼ö¸¦ ¿ÜºÎ Á¤Àûº¯¼ö·Î ¼±¾ðÇÏ¸é ´Ù¸¥ ¸ðµâ¿¡´Â ¾Ë·ÁÁöÁö ¾ÊÀ¸¹Ç·Î À̸§ÀÇ Ãæµ¹À» ¹æÁöÇÒ ¼ö ÀÖ°Ô µÇ°í ÀÌ ¸ðµâÀº ¾Æ¹« ÇÁ·ÎÁ§Æ®¿¡¼³ª ÀçȰ¿ëÇϱ⠽¬¿öÁø´Ù.