티스토리 뷰

728x90

[ static  키워드 붙는 경우 ] 

- 전역 static 변수

- 로컬 static 변수

- static 함수 

- class내의 static 변수 (다음 포스팅에: https://o0oheamao0o.tistory.com/129)

- class내의 static 함수  (다음 포스팅에: https://o0oheamao0o.tistory.com/129)


Static 특징

우선 static에 대해 잠시 정리하면

- static 변수는 정의된 시점에서 메모리가 할당된다. 

- 변수가 정의된 스코프(범위, { })가 종료되어도 static 변수는 메모리가 반환되지 않는다.

   (일반 지역변수는 자신이 선언된 스코프가 끝나면 메모리도 반환된다.)

- static 변수는 프로그램 내내 지속되고, 프로그램이 종료되면 메모리가 반환된다. 

 


전역 static 변수

- 전역 범위에 선언된 static변수를 말한다. 

- 프로그램이 시작될 때 data영역에 할당되고, 프로그램이 종료될 때 소멸한다. 

- 해당 파일 내에서만 접근이 가능하다.

- 초기화하지 않으면 자동 0으로 초기화된다. 

 


로컬 static 변수

- 함수 내에서( {} 내에서) 선언된 static변수를 말한다. 

- 프로그램이 시작될 때 data영역에 할당되고, 프로그램이 종료될 때 소멸한다. 

- 접근은 해당 함수 안에서만 가능하지만, 함수가 끝나도 소멸되지 않는다.( 메모리가 반환되지 않는다.)

- 초기화하지 않으면 자동 0으로 초기화된다. 

- 함수를 여러번 호출해도 여러번 생성되지 않으며,

  처음 함수를 호출할 때 생성된 그 변수 그대로 프로그램이 종료될 때까지 유지된다. 

void AddCnt(){
    static int iCnt;
    iCnt++;
    cout << iCnt;
}

int main(){
    for(int i=0;i<5;i++) AddCnt();	//1 2 3 4 5가 출력된다. 
}

static 함수 

- 해당 함수를 다른 파일에서 사용 불가하게 만든다.

   (c++에서는 함수 중복 선언문제를 namespace등으로 해결하긴 함. c시절에는 static으로 해결함) 


- class내의 static 변수

- class내의 static 함수 

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함