static 정적 변수 정리

메모리의 차이 : 일반 변수는 스텍에 static 변수는 힙에 


사용 되는 종류


1. 지역 static 변수

 함수가 종료 되어도 

변수 값이 사라지지 않는다.

=> 따라서 두번 이상 선언해도 의미 없음

 


 int fun()

{

static int a = 0;

a++;

return a;

}

void main()

{

for(int i = 0; i<10; i++)

printf("%d", fun());

}


fun 함수를 10번 호출 하는데 함수 내에서 int a = 0을 해주었는데도 불구하고

결과는 12345678910 으로 나온다 

왠지 여기서 의도치 않은 결과가 많이 나올 것 같다






2. 전역 static 변수, static 함수()

cpp,마다 사용 한다.


extern 은 cpp파일 상관 없이 모든 프로젝트에서 전역 변수를 공유 하는데

static 변수는 cpp 마다 변수를 공유한다 




3. 클래스 내의 static 함수

멤버 변수를 사용하지 않음

public, private, protect 

이런거 상관 없ㅋ엉ㅋ 걍 안써ㅋㅋ


그럼 어떤 변수를 사용하느냐면

함수 인자로 들어오는 파라메터 들을 이용한다.





 class c

{

private:

int ca,cb; 

public:

c()

{

ca = 1;

cb = 2;

}

static int add()

{

int r;

r = ca+cb;

return r;

}

};


int main()

{

c C;

printf("%d\n", C.add());


return 0;

 }


- 에러 발생



이 함수는 클래스.함수 이렇게 사용하지 않고,

클래스->함수 이렇게 사용한다.

즉 오브젝트를 만들지 않고 사용 가능 하다

그럼 메모리에 좋다


'c/c++' 카테고리의 다른 글

레지스트리  (0) 2013.01.03
참조자 & 포인터  (0) 2012.12.18
[DLL] dll import하기  (0) 2012.12.17
디렉토리 파일 개수 구하기(하위 디렉토리 포함 )  (0) 2012.12.12
[LNK 2001] DLL 포함 시키기  (0) 2012.12.04