#include <stdio.h>
int main()
{
int a = 1; // (1) 지역 변수 a를 1로 초기화
static int b = 2; // (2) 정적 변수 b를 2로 초기화
{
int a = 3; // (3) 새로운 지역 범위에서 지역 변수 a를 3으로 초기화
b = a + 4; // (4) 외부 범위에서 선언된 정적 변수 b의 값을 변경 (b = 3 + 4)
printf("%d %d\n", a, b); // (5) 현재 범위의 a와 변경된 b를 출력 (3 7)
}
printf("%d %d\n", a, b); // (6) 외부 범위의 a와 변경된 b를 출력 (1 7)
return 0;
}
결과:
3 7
1 7
지역 변수와 정적 변수는 프로그램에서 사용되는 변수의 특성에 따라 차이가 있습니다.
1. **지역 변수 (Local Variables):**
- 선언된 블록 내에서만 유효한 변수입니다. 함수 내의 중괄호({})로 둘러싸인 부분이나, 루프 내에서 선언된 변수가 일반적인 예입니다.
- 지역 변수는 선언된 블록에서만 접근 가능하며, 블록을 벗어나면 소멸됩니다.
- 각 함수 호출마다 새로운 인스턴스가 생성되어 독립적으로 동작합니다.
2. **정적 변수 (Static Variables):**
- 프로그램이 실행되는 동안 메모리에 유지되는 변수입니다.
- 정적 변수는 `static` 키워드로 선언되며, 함수 내에서 또는 함수 외부에서 사용될 수 있습니다.
- 함수 내부에서 정적 변수를 선언하면 해당 변수는 함수가 종료되더라도 값이 유지됩니다.
- 함수 외부에서 선언된 정적 변수는 파일 스코프를 가지며, 파일 내에서 전역적으로 사용됩니다.
간단한 예시로 설명하면:
#include <stdio.h>
void exampleFunction() {
int localVar = 0; // 지역 변수
static int staticVar = 0; // 정적 변수
localVar++;
staticVar++;
printf("Local Variable: %d, Static Variable: %d\n", localVar, staticVar);
}
int main() {
exampleFunction(); // 출력: Local Variable: 1, Static Variable: 1
exampleFunction(); // 출력: Local Variable: 1, Static Variable: 2
return 0;
}
여기서 `localVar`는 함수 호출 간에 초기화가 되어 누적되지 않지만, `staticVar`는 누적되어 계속 값을 유지합니다.
반응형
'Programming > C' 카테고리의 다른 글
C | into(), take() (0) | 2024.03.12 |
---|---|
Bubble Sort (0) | 2024.03.12 |
[C] 배열과 포인터 (1) | 2023.12.23 |
printf에 값이 여러 개일 경우엔 “큰 따옴표”를 쓰기 (1) | 2023.12.22 |
명령 프롬프트에서 c 파일 실행하는 방법 (1) | 2023.12.22 |