KPlay의 코딩 그리고 잡동사니

C언어에서 선언되는 변수는 크게 지역변수와 전역변수 두가지로 나뉩니다.

지역변수는 특정 함수 내에서 선언된 변수로

1. 선언과 동시에 초기화 하지 않으면 쓰레기값이 저장된다

2. 해당 함수의 실행과 동시에 메모리 공간에 할당되었다가 함수가 종료되면 소멸된다

3. 선언된 특정 함수 내에서만 사용이 가능한 변수이다

라는 특징을 가집니다.

전역변수는 함수 밖에서 선언된 변수로

1. 초기화를 해주지 않아도 자동으로 0으로 초기화 된다

2. 프로그램 실행과 함께 메모리공간에 할당되었다가 프로그램 종료와 함께 소멸된다

3. 어느 함수에서든 사용이 가능한 전역적인 변수이다

라는 특징을 가집니다.

마지막으로 static 지역변수는 지역변수와 전역변수의 특성을 하나씩 가집니다

1. 특정함수 내에서만 쓰일 수 있는 지역변수의 특성을 가진다

2. 프로그램 종료시까지 메모리공간에서 소멸되지 않는다는 전역변수의 특성도 함께 가진다

static 지역변수의 특성을 보시면 알겠지만 지역변수의 장점과 전역변수의 단점을 합쳐 보완한 함수입니다.

여기서 전역변수의 단점이라고 이야기하는것은

언뜻보면, 전역변수는 프로그램 전역에서 쓸 수 있고 종료시까지 소멸되지 않으므로 편리해 보이지만

그만큼 메모리 공간을 잡아먹어 비효율적이고 전역변수를 많이 선언할수록 변수 관련해서 버그가 났을때

수정하기 힘들다는 단점이 있습니다. 따라서 전역변수는 어쩔 수 없는 경우를 제외하고는 잘 추천되지 않는 변수입니다.

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band