C언어
[C언어] 정적 변수 static
코딩 메모장
2024. 9. 24. 23:40
728x90
1. 정적 변수 (Static Variable)
- 정의: 함수 내에서 선언된 변수에 static을 붙이면, 해당 변수는 함수가 호출될 때마다 새로 생성되지 않고, 프로그램이 종료될 때까지 메모리에 유지됩니다.
- 특징:
- 함수가 종료되더라도 값이 유지됩니다.
- 초기화는 한 번만 이루어지며, 프로그램이 실행되는 동안 그 값을 계속 사용할 수 있습니다.
- 예제
#include <stdio.h>
void counter() {
static int count = 0; // 정적 변수
count++;
printf("Count: %d\n", count);
}
int main() {
counter(); // Count: 1
counter(); // Count: 2
counter(); // Count: 3
return 0;
}
2. 정적 전역 변수 (Static Global Variable)
- 정의: 파일의 최상단에서 static을 붙여 선언된 전역변수는 해당 파일 내에서만 접근 가능하고, 다른 파일에서는 참조할 수 없습니다.
- 특징:
- 이름 충돌을 방지할 수 있으며, 변수의 범위를 제한할 수 있습니다.
- 예제
// file1.c
#include <stdio.h>
static int globalVar = 10; // 정적 전역변수
void display() {
printf("Global Variable: %d\n", globalVar);
}
3. 정적 함수 (Static Function)
- 정의: 함수 선언 시 static을 붙이면, 그 함수는 해당 파일 내에서만 호출할 수 있으며, 다른 파일에서는 사용할 수 없습니다.
- 특징:
- 모듈화와 캡슐화를 통해 코드의 가독성과 유지보수성을 향상시킵니다.
- 예제
// file1.c
#include <stdio.h>
static void greet() { // 정적 함수
printf("Hello, World!\n");
}
void callGreet() {
greet(); // 같은 파일 내에서 호출 가능
}
4. 장점과 단점
- 장점:
- 변수나 함수의 범위를 제한하여 이름 충돌을 방지합니다.
- 정적 변수는 상태를 유지할 수 있어 특정 상황에서 유용합니다.
- 단점:
- 메모리에 계속 남아 있기 때문에, 너무 많은 정적 변수를 사용하면 메모리 사용량이 증가할 수 있습니다.
728x90