static
static 전역 변수는 항상 해당 변수가 선언된 파일 내부에서만 참조가 가능
internal linkage(내부 연결성)
- 파일 내부에서만 참조 가능한 static 의 성질
함수 내부 선언
#include <stdio.h>
void increaseNumber() {
static int sNum = 0; // <- 선언 위치
printf("%d\n", sNum);
sNum++;
}
int main() {
increaseNumber(); // 0
increaseNumber(); // 1
increaseNumber(); // 2
increaseNumber(); // 3
//printf("%d", sNum); //사용할 수 없다
}
출력
0
1
2
3
외부에 선언
선언 후 위치에 상관없이 프로그램의 시작부터 프로그램 종료 시 까지
메모리에 할당되어 그 값을 마음대로 바꿀수 있다.
정적 변수는 함수를 벗어나더라도 변수가 사라지지 않고 계속 유지
++ 같은 연산자 사용시 계속 값이 증가
main문 밖에서 선언하게 되면, main에서나 increaseNumber에서도 사용이 가능
선언 위치는 자유 그에 따른 제약에 주의가 필요
#include <stdio.h>
static int sNum = 0;// <- 선언 위치
void increaseNumber() {
printf("%d\n", sNum);
sNum++;
}
int main() {
increaseNumber(); // 0
increaseNumber(); // 1
increaseNumber(); // 2
increaseNumber(); // 3
//printf("%d", sNum); // 4
}
'C > C' 카테고리의 다른 글
포인터 pointer 2 - 자료형 포인터 와 const (0) | 2022.10.02 |
---|---|
포인터 pointer 1 - & 과 역 참조 (0) | 2022.10.01 |
C char 그리고 wchar_t 문자, 문자열 (0) | 2022.09.28 |
scanf() C4996 오류 이유, 해결 (0) | 2022.09.26 |
묵시적 형 변환, 명시적 형 변환 (0) | 2022.09.25 |