지역 변수, 전역 변수, 정적 변수
C언어에서 변수의 유효 범위와 수명은 프로그램의 동작을 이해하고 제어하는 데 중요한 역할을 한다. 이 글에서는 C언어에서 사용되는 세 가지 주요 변수 유형인 지역 변수(Local Variables), 전역 변수(Global Variables), 정적 변수(Static Variables)에 대해 설명한다.
⭐ 1. 지역 변수 (Local Variables)
지역 변수는 함수 내부에서 선언되며, 해당 함수 내에서만 접근할 수 있다. 함수의 호출이 시작될 때 메모리에 할당되고, 함수의 실행이 끝나면 메모리에서 해제된다. 이러한 특성 때문에 지역 변수는 함수의 독립성과 재사용성을 높이는 데 기여한다.
void function() {
int localVariable = 5; // 지역 변수 선언
printf("%d\n", localVariable); // 지역 변수 사용
}
⭐ 2. 전역 변수 (Global Variables)
전역 변수는 함수 외부에서 선언되며, 프로그램의 어느 곳에서나 접근할 수 있다. 프로그램의 시작 시 메모리에 할당되고 프로그램이 종료될 때까지 유지된다. 전역 변수는 여러 함수들 사이에서 데이터를 공유할 필요가 있을 때 유용하지만, 과도한 사용은 프로그램의 복잡성을 증가시키고 디버깅을 어렵게 할 수 있다.
int globalVariable = 10; // 전역 변수 선언
void function() {
printf("%d\n", globalVariable); // 전역 변수 사용
}
⭐ 3. 정적 변수 (Static Variables)
정적 변수는 static 키워드를 사용하여 선언된다. 정적 변수는 지역 정적 변수와 전역 정적 변수의 두 가지 형태로 나뉜다.
1. 지역 정적 변수: 함수 내부에 선언되며, 프로그램 실행이 시작될 때 메모리에 할당되고 프로그램이 종료될 때까지 유지된다. 그러나 해당 변수는 선언된 함수 내에서만 접근할 수 있다. 함수 호출 간에 변수의 값이 유지된다. 실제 프로젝트에서는 사용해본 적 없는 케이스이다.
void function() {
static int staticLocalVariable = 0; // 지역 정적 변수 선언
staticLocalVariable++;
printf("%d\n", staticLocalVariable); // 값은 함수 호출 간 유지됨
}
2. 전역 정적 변수: 함수 외부에 선언되지만 파일 내부에서만 접근할 수 있다. 프로그램의 다른 파일들에서는 접근할 수 없어, 해당 변수를 사용하는 코드의 범위를 제한하는 데 도움이 된다.
static int staticGlobalVariable = 20; // 전역 정적 변수 선언
void function() {
printf("%d\n", staticGlobalVariable); // 전역 정적 변수 사용
}
⭐ 4. Code
#include <stdio.h>
// 전역 변수 선언
int globalVariable = 10;
// 전역 정적 변수 선언: 이 파일 내에서만 접근 가능
static int staticGlobalVariable = 20;
// 함수 선언
void function(void);
void staticFunction(void);
int main() {
printf("전역 변수 초기값: %d\n", globalVariable);
printf("전역 정적 변수 초기값: %d\n\n", staticGlobalVariable);
function();
function();
function();
staticFunction();
staticFunction();
return 0;
}
void function() {
// 지역 변수 선언
int localVariable = 5;
printf("지역 변수: %d\n", localVariable);
// 지역 정적 변수 선언: 함수 호출 간 값 유지
static int staticLocalVariable = 0;
staticLocalVariable++;
printf("지역 정적 변수: %d\n", staticLocalVariable);
// 전역 변수와 전역 정적 변수 사용
globalVariable += 10;
staticGlobalVariable += 10;
printf("전역 변수: %d\n", globalVariable);
printf("전역 정적 변수: %d\n\n", staticGlobalVariable);
}
void staticFunction() {
// 이 함수는 전역 변수와 전역 정적 변수의 현재 값을 보여준다.
printf("staticFunction에서 본 전역 변수: %d\n", globalVariable);
printf("staticFunction에서 본 전역 정적 변수: %d\n\n", staticGlobalVariable);
}
지역 변수, 전역 변수, 정적 변수는 각각 다른 유효 범위와 수명을 가지며, C언어 프로그래밍에서 중요한 역할을 한다. 지역 변수는 함수의 독립성을 지원하고, 전역 변수는 데이터 공유를 용이하게 하며, 정적 변수는 메모리의 효율적 사용과 변수의 접근 범위를 제한하는 데 사용된다. 이러한 변수들을 적절히 사용하는 것은 프로그램의 효율성과 유지보수성을 높이는 데 기여한다.
'C언어 30강' 카테고리의 다른 글
[C/C++ Tip] 25. C언어 2차원 배열 (0) | 2024.11.10 |
---|---|
[C/C++ Tip] 24. C언어 파일 입출력 (1) | 2024.11.09 |
[C/C++ Tip] 22. C언어 반복문 : While문 (0) | 2024.11.09 |
[C/C++ Tip] 21. C언어 반복문: For문 (0) | 2024.11.09 |
[C/C++ Tip] 20. C언어 조건문 마스터하기 : Switch문 (1) | 2024.11.05 |