NULL
전역변수와 static변수 본문
전역변수라는 것은 ?
어느영역이든 접근가능하고
프로그램시작과 동시에 메모리공간이
할당되어 종료전까지 데이터가 소멸할일없다.
허나, 너무많이써버리게되면
프로그램이 복잡해져버린다.
프로그램을 복잡하게 만드는 주범이다.
스파게티코드가 되지않게 꼭 써야할때만 쓰고
왠만하면 쓰지않는게 적합하다.
전역변수는 기본적으로 0으로 초기화된다.
static변수 라는것은 ?
선언된 함수 내에서만 접근이 가능하다.
딱 1회만 초기화되고 프로그램 종료 시까지
메모리 공간에 존재한다.
이 말은 static변수가 1회 할당이 되고 나서
해당함수내에서 static변수는 사라지고
메모리영역에 남아서 값이 유지된다.
만약 초기화하지않아도 0으로 초기화된다.
static지역변수는 전역변수보다 상대적으로 안정적이다.
그 이유는 ?
전역변수는 어디서든지 접근가능하기때문에
만약 전역변수로 여러소스들을 활용하게 되면
값이 너무 꼬여서 소스를 한번 고칠일이 생기면
다시 처음부터 짜야되는 일이 생기거나
소스자체가 복잡해지기때문이다.
그래서 꼭 쓰기전에는 살펴야할것은
전역변수를 사용하기전엔
내가 변수를 어디서든 접근하게 해야되는지
아니면 함수내에서 값을 유지해야되는지
1. 유지
2. 어디서든지
이러한 경우를 생각해야한다.
그래서 어디서든지보다는
해당 함수내에서 값만 유지하는것을
필요로 하게 된다면 복잡하게 될수도 있는
전역변수는 피하고 해당함수내에서만
전역의 성향을 가지는 static변수를 사용하는것이 좋다.
즉 static변수는 해당함수내에서만 전역역할을 하기에
사용범위를 제한할수있어서
소스가 뒤엉키는일을 방지할수있기에
전역변수보다 안정적이라는 것이다.
전역변수와 같이 프로그램 종료전까지 메모리가
남아있지만 접근 범위를 하나의 함수로 제한했기때문이다.
지역변수와 static변수의 차이점은?
지역변수는
선언된 함수 내에서만 접근가능하다.
함수 내에서 선언된 지역변수는
해당 함수가 반환하거나 종료되면 값이 소멸된다.
하지만
함수 내에 선언된 static변수는
선언된 함수 내에서만 접근이 가능하고,
딱 1회만 초기화되며 프로그램 종료 시까지
메모리공간이 존재한다.
static변수는 함수종료시에도
값이 유지되며
지역변수는 함수가 종료되면
값이 사라져버리지만
static변수는 값이 메모리공간에서
유지된다는 점입니다.
static변수의 사용용도는
함수에서 값을 유지시킬것이
필요할때 써주는것입니다.
사용용도정리
지역변수static은
전역변수처럼 초기화하지않아도 0으로 초기화되고
프로그램 시작과 동시에 메모리안에 할당되고
초기화가 되서 프로그램이
종료될 때까지 메모리공간에 남아있다.
그리고 그 지역내에 static변수는 사라지게 된다.
전역변수랑의 차이는 지역변수에서 범위를
제한 시킬수있다.
프로그램이 실행되면 static 지역변수는
해당 함수에 존재하지않고 메모리공간에 남는다.
1.값 유지 (static변수를 쓴다.)
함수를 빠져나가는 순간 값이 사라지는데
그값이 사라지지않고 유지되게 하고싶을때
static을 쓴다.
2.어디서든 접근가능한 변수 (전역변수를 쓴다.)
주의할것은 꼭 어디서든 써야만하는가 다시한번
생각을 해서 사용한다.
'C' 카테고리의 다른 글
1차원 배열 개념정리 (0) | 2016.12.14 |
---|---|
재귀함수에 대한 이해 (0) | 2016.12.14 |
지역변수와 매개변수 이해 (0) | 2016.12.14 |
함수의 선언 return기능 (0) | 2016.12.14 |
선택적실행 switch문 (0) | 2016.12.14 |