static Ű¿öµå
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

  • 2011/3/4ÀÏ ÀÛ¼º
  • static

    static Ű¿öµå´Â Á¤Àû º¯¼ö (static variable)¸¦ ¼±¾ðÇϱâ À§Çؼ­ »ç¿ëÇϴ Ű¿öµå´Ù. Á¤Àûº¯¼ö´Â Á¤ÀûÀ¸·Î ÇÒ´çµÇ´Â º¯¼ö¶ó°í º¸Åë ¼³¸íÇϴµ¥, À̰е¿¾î¹Ýº¹ °°´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ ¸¸µé¾îÁö´Â º¯¼ö Áï ÇÁ·Î±×·¥ Àüü¿¡ °íÁ¤µÇ¾î ÀÖ´Â º¯¼ö¶ó°í ¼³¸íÇÏ´Â°Ô ³ªÀ» °Í °°´Ù. ÇÁ·Î±×·¥ Àüü¿¡ °íÁ¤µÇ¾î Àֱ⠶§¹®¿¡ Á¤Àû º¯¼ö´Â ÇÁ·Î±×·¥ÀÇ »ý¼º°ú ÇÔ²² ÇÒ´çµÇ°í ÇÁ·Î±×·¥ÀÇ Á¾·á½Ã¿¡ ÇØÁ¦ µÈ´Ù.

    Java

    Java´Â °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ¸ðµç °ÍÀ» °´Ã¼·Î º»´Ù. ¸¸¾à ¾î¶² °´Ã¼¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é °´Ã¼ÀÇ ÀνºÅϽº¸¦ ¸¸µé¾î¼­ »ç¿ëÇØ¾ß ÇÑ´Ù. À̶§ ÀνºÅϽº´Â ´Ù¸¥ ÀνºÅϽº¿Í ¿ÏÀüÈ÷ µ¶¸³ÀûÀ̹ǷΠ´Ù¸¥ ÀνºÅϽº¿Í µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ ¼ö ¾ø´Ù.

    ±×·¯³ª ¶§¶§·Î °´Ã¼ÀÇ ¸â¹öº¯¼ö¸¦ ¸ðµç ÀνºÅϽº¿¡¼­ °øÀ¯Çؼ­ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. À̶§ staticŰ¿öµå¸¦ ºÙ¿©ÁØ´Ù. staticÀÌ ºÙÀº ¸â¹ö º¯¼ö´Â ÀνºÅϽº¸¦ »ý¼ºÇÏÁö ¾Ê¾Æµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Ŭ·¡½º ÀνºÅϽº°¡ ¸¸µé¾îÁö±â Àü¿¡ ÀÚµ¿ÀûÀ¸·Î ¸¸µé¾îÁö±â ¶§¹®ÀÌ´Ù. ÀÌ¹Ì ¸Þ¸ð¸®¿¡ ¿Ã¶ó°£ µ¥ÀÌÅÍÀ̱⠶§¹®¿¡ ÀνºÅϽº¿¡ »ó°ü¾øÀÌ °ø¿ëÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖ´Ù.

    ¾Æ·¡ÀÇ ¿¹¸¦ º¸ÀÚ
    import java.util.*; 
     
    class foo 
    { 
        static int i; 
        void increment() 
        { 
            i++; 
        } 
        void Print() 
        { 
            System.out.println(i); 
        } 
    } 
    public class myStatic 
    { 
        public static void main(String[] args) 
        { 
            foo a = new foo(); 
            foo b = new foo(); 
            a.Print(); 
            b.Print(); 
            a.increment(); 
            a.increment(); 
            a.Print(); 
            b.Print(); 
        } 
    } 
     
    °á°ú¸¦ º¸¸é static ¸â¹öÀÎ i¸¦ ÀνºÅϽº¿¡ °ü°è¾øÀÌ ÇÔ²² »ç¿ëÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
    # java myStatic  
    0 
    0 
    2 
    2 
     

    static¸¦ ½á¼­ ¾òÀ» ¼ö ÀÖ´Â ÀÌÁ¡Àº ´ÙÀ½°ú °°´Ù.
    1. °´Ã¼¸¦ »ý¼ºÇÏÁö ¾Ê°íµµ º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹ÄÁµ¥, foo.i¿Í °°Àº Ȱ¿ëÀÌ °¡´ÉÇÏ´Ù. ÀÌ´Â ¸Þ¼­µå¿¡µµ µ¿ÀÏÇÏ°Ô Àû¿ëµÈ´Ù.
    2. °´Ã¼¸¦ »ý¼ºÇÏÁö ¾Ê°íµµ º¯¼ö¿Í ¸Þ¼­µå¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î ºü¸£°Ô ÀÛµ¿ÇÑ´Ù. ¶ÇÇÑ ÆíÇÏ´Ù.

    static Ű¿öµå¸¦ ¾µ °æ¿ì ¾Æ·¡ÀÇ »çÇ×À» ÁÖÀÇÇØ¾ß ÇÑ´Ù.
    1. static ¸Þ¼­µå´Â ÀÏ¹Ý ¸â¹öº¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. Á¶±Ý¸¸ »ý°¢ÇØ º¸¸é ´ç¿¬È÷ ±×·¡¾ß ÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. static Ű¿öµå°¡ ºÙÀ¸¸é ÀνºÅϽº°¡ ¸¸µé¾îÁö±â Àü¿¡ È£Ãâ°¡´ÉÇÏ´Ù. ±×·¯³ª staticÀÌ ºÙÁö ¾ÊÀº ¸â¹öº¯¼ö´Â ÀνºÅϽº°¡ ¸¸µé¾îÁö±â Àü¿£ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. Á¸ÀçÇÏÁö ¾Ê´Â º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾øÀ¸´Ï ´ç¿¬È÷ ÀÏ¹Ý ¸â¹öº¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. ¸¸¾à static ¸Þ¼­µå¿¡¼­ ÀÏ¹Ý ¸â¹öº¯¼ö¸¦ È£ÃâÇϸé ÄÄÆÄÀÏ ½ÇÆÐÇÑ´Ù.

    static¸¦ ¾µ °æ¿ì ¾òÀ» ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ºÐ¸íÈ÷ Á¸ÀçÇϹǷΠ¾Æ·¡¿Í °°Àº °æ¿ì¿¡´Â static¸¦ °í·ÁÇØ º¸ÀÚ.
    1. Ŭ·¡½º°£ ÇÔ²² °øÀ¯Çؼ­ »ç¿ëÇØ¾ß ÇÏ´Â ¸â¹öº¯¼öµé
    2. ÀνºÅϽº º¯¼ö¸¦ »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¼­µåµé

    C/C++

    C ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â static, auto, register, extern 4°³ÀÇ storage class - ¿©±â¿¡¼­ °´Ã¼ÀÇ Å¬·¡½º°¡ ¾Æ´Ñ ÁýÇÕÀÇ Àǹ̸¦ °¡Áø´Ù - ¸¦ °¡Áø´Ù.
    1. static global variable
      • ¼Ò½ºÆÄÀÏÀÇ ÃÖ»óÀÇ ·¹º§¿¡¼­ ÇÔ¼ö¿ÜºÎ¿¡ ¼±¾ðµÇ´Â static º¯¼ö.
      • ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ ¶§ ÇÒ´çµÇ°í Á¾·áÇÒ ¶§±îÁö À¯ÁöµÈ´Ù.
      • staticÀ¸·Î ¼±¾ðµÈ º¯¼ö´Â ¼±¾ðµÈ ¼Ò½ºÄÚµå ÆÄÀÏ¿¡ °íÁ¤µÇ¹Ç·Î, ´Ù¸¥ ÆÄÀÏ¿¡¼­ µ¿ÀÏÇÑ À̸§ÀÇ static º¯¼ö°¡ ¼±¾ðµÉ ¼ö ÀÖ´Ù. ¹°·Ð ÀÌµé º¯¼ö´Â ÆÄÀϺ°·Î µ¶¸³ÀûÀ¸·Î »ç¿ëµÈ´Ù.
    2. static local variable
      • ÇÔ¼ö¾È¿¡¼­ ¼±¾ðµÇ´Â static º¯¼ö·Î automatic local variables (ÀÚµ¿Áö¿ªº¯¼ö)¿Í °°Àº scope¸¦ °¡Áø´Ù.
      • ÇÔ¼ö°¡ È£ÃâµÉ¶§ ÇÒ´çµÇ°í ÇÔ¼ö°¡ ¹ÝȯÇÒ¶§ ¼Ò¸êµÈ´Ù.
    3. static º¯¼ö°ª ÃʱâÈ­. staticÀ¸·Î ¼±¾ðµÈ º¯¼öµéÀº °íÀ¯ÀÇ °ªÀ¸·Î ÃʱâÈ­µÈ´Ù.
      µ¥ÀÌÅÍÇü ÃʱâÈ­ °ª ºñ°í
      int 0
      char \0
      pointer NULL
      float 0.0
      double 0.0
      bool 0 CÀÇ °æ¿ì C99¿¡¼­ Áö¿ø
    4. static member variable
      • C++¿¡¼­´Â ¸â¹öº¯¼ö¸¦ static ¸â¹öº¯¼ö·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. static À¸·Î ¼±¾ðµÈ ¸â¹öº¯¼ö´Â ¸ðµç Ŭ·¡½º ÀνºÅϽº°¡ ¼­·Î °øÀ¯ÇÑ´Ù.
    5. static method
      • C++Àº ¸Þ¼­µå¸¦ static·Î ¼±¾ðÇÏ´Â°Ô °¡´ÉÇÏ´Ù. static·Î ¼±¾ðÇÑ ¸Þ¼­µå´Â Ŭ·¡½ºÀÇ ÀνºÅϽº°¡ ¾ø¾îµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

    C¿¡¼­ static ¸â¹öÀÇ »ç¿ë ¿¹
    #include <stdio.h> 
    #include <stdbool.h> 
     
    void showstat(int i) 
    { 
        static int nStatic; 
     
        nStatic += i; 
        printf("nStatic is %d\n", nStatic); 
    } 
     
    int main() 
    { 
        for(int i = 0; i < 10; i++) 
        { 
            showstat(i); 
        } 
    } 
     

    C++¿¡¼­ static ¸â¹öÀÇ »ç¿ë ¿¹
    #include <iostream> 
     
    using namespace std; 
     
    class myCount 
    { 
    public: 
        static int count; 
        void increment() 
        { 
            count++; 
        } 
        static void print() 
        { 
            cout << count << endl; 
        } 
    }; 
     
    int myCount::count = 0; 
     
    int main() 
    { 
        myCount a, b; 
     
        a.increment(); 
        b.increment(); 
        a.print(); 
        b.print(); 
     
        myCount.print(); // ÀνºÅϽº ¾øÀÌ È£Ãâ 
    } 
     
    c++¿¡¼­ static ¸Þ¼­µå¸¦ »ç¿ëÇÒ ¶§´Â ´ÙÀ½ÀÇ »çÇ×À» ÁÖÀÇÇØ¾ß ÇÑ´Ù. Java¿Í ºñ½ÁÇÏ´Ù
    1. static´Â ÀÏ¹Ý ¸â¹öº¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.
      static´Â Ŭ·¡½º ÀνºÅϽº ¾øÀÌ È£ÃâÇÒ ¼ö ÀÖ´Ù. ¹Ý¸é ÀÏ¹Ý ¸â¹öº¯¼ö´Â ÀνºÅϽº°¡ ¸¸µé¾îÁ®¾ß ÇÒ´çµÈ´Ù. ¾ø´Â ¸â¹öº¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾øÁö ¾Ê°Ú´Â°¡ ?
    2. ÀÏ¹Ý ¸Þ¼­µå´Â static ¸â¹öº¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. static ¸â¹öº¯¼ö´Â ÀÌ¹Ì Á¸ÀçÇϰí Àֱ⠶§¹®¿¡, »ç¿ëÇϴµ¥ ¹®Á¦°¡ ¾ø´Ù.

    static¸¦ ÀÌ¿ëÇÒ °æ¿ìÀÇ ÀåÁ¡¿ª½Ã Java¿Í ºñ½ÁÇÏ´Ù.

    c ¿¡¼­ static ÇÔ¼ö

    C¿¡¼­ ÇÔ¼ö°¡ static·Î ¼±¾ðµÇ¸é, ÇØ´ç ÆÄÀÏÀÇ ³»ºÎ¿¡¼­¸¸ È£ÃâÀÌ °¡´ÉÇÏ°í ´Ù¸¥ ÆÄÀÏ¿¡¼­´Â È£ÃâÇÒ ¼ö°¡ ¾ø´Ù. ¿¹ÄÁµ¥, private ó·³ ÀÛµ¿ÇÑ´Ù.

    ÀÌ·± staticÀÇ Æ¯Â¡Àº ¿©·¯ ¸íÀÌ Çù¾÷ÇÏ´Â Å« ±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¿¡¼­ ¿øÇÒÇÑ Çù¾÷ÀÌ °¡´ÉÇϵµ·Ï ÇØÁØ´Ù. ¸¸¾à ¾î¶² ÇÔ¼ö¸¦ staticÀ¸·Î ¼±¾ðÇÏÁö ¾Ê¾Ò´Ù¸é ÀÌ ÇÔ¼ö°¡ º¯°æµÆÀ» ¶§, ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¸ðµç ÆÄÀÏÀ» ÃßÀûÇØ¼­ º¯°æÇØ¾ß ÇÑ´Ù.

    ¶§¹®¿¡, °ø¿ëÀ¸·Î »ç¿ëÇÒ ÇÔ¼ö°¡ ¾Æ´Ï¶ó¸é static ÇÔ¼ö·Î »ç¿ëÇØ¼­ private ¿µ¿ª¿¡¼­¸¸ »ç¿ëÇϵµ·Ï ÇÏ´Â°Ô ³ªÁßÀ» À§Çؼ­ ÁÁ´Ù.

    ÅÂ±× :

    category_C++
    category__2
    EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.