반응형
정적 변수는 2가지가 있다
- 외부정적변수
- 내부정적변수
static변수는 프로그램이 시작 될 때 할당이 되고 프로그램이 끝날 때 없어짐.
초기화가 안 되어 있으면 0으로 초기화 해주게된다.
외부 정적 변수
외부 정적 변수 초기화
#include <stdio.h>
static int count;
int main()
{
printf("%d", count);
}
static변수는 프로그램이 시작 될 때 할당이 되고 프로그램이 끝날 때 없어짐.
함수가 끝날 때 파괴되는 변수가 아니기에 함수가 끝나도 그 값을 기억하고 있을 수 있다.
전역으로 선언한 static 변수는 그 소스파일 내의 모든 함수에서 사용이 가능하다.
다른 소스 파일에서 사용하지 못함. 정보은닉(정보를 숨긴다) 효과가 있음.
결론
- 외부 정적 변수는 전역 변수라고 생각하면 된다.
- 소스 파일 내에서 함수 어디에서도 사용 가능.
- 단, 다른 소스 파일에서는 사용하지 못한다.
내부정적변수
내부 정적 변수 예제
#include <stdio.h>
void mult()
{
static int count;// static 지역 변수에 선언
count = count * 2;
}
void plus()
{
count = count + 10;
}
int main()
{
printf("처음 count 값 : %d\\n", count);
plus();
printf("plus count 값 : %d\\n", count);
mult();
printf("mult count 값 : %d\\n", count);
}
내부 정적 변수는 다른 함수에서는 참조할 수가 없다.
#include <stdio.h>
void mult()
{
static int count = 1;// static 지역 변수에 선언
count = count * 2;
printf("mult count 값 : %d\\n", count);
}
int main()
{
for (int i = 0; i < 4; i++)
{
mult();
}
}
mult에서 선언한 static 변수는 파괴되지 않고 값을 계속 가질 수 있다는 것을 알 수 있었다.
결론
- 함수가 여러번 실행되더라도 초기화는 한 번만 이루어진다.
- 내부정적변수는 다른 함수에서는 참조할 수가 없다.
정리
외부정적변수
- 외부 정적 변수는 전역 변수라고 생각하면 된다.
- 소스 파일 내에서 함수 어디에서도 사용 가능.
- 단, 다른 소스 파일에서는 사용하지 못한다.
내부정적변수
- 함수가 여러번 실행되더라도 초기화는 한 번만 이루어진다.
- 내부정적변수는 다른 함수에서는 참조할 수가 없다.
참고 블로그
C언어 static변수(정적변수)
C언어 static변수(정적변수)C언어 static변수에 대해 알아보려고하는데요. static변수는 한글로는 ...
blog.naver.com
반응형
'42Seoul > get_next_line' 카테고리의 다른 글
6. Mandatory part, Bonus part source code (2) | 2023.04.08 |
---|---|
5. 운영체제에 따른 read (0) | 2023.04.08 |
3. 파일 디스크립트 함수(open, read, close) (0) | 2023.04.08 |
2. OPEN_MAX, 연결리스트 vs 배열 (2) | 2023.04.08 |
1. 파일 디스크립터(file Descriptors) (0) | 2023.04.08 |