- HOME
- Post in | c/c++
- Post at | 2012. 12. 18. 10:13 | by 밀크빵.
- View comment
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 |