42Seoul/get_next_line

4. 정적 변수(static)

재윤 2023. 4. 8. 21:14
반응형

정적 변수는 2가지가 있다

  1. 외부정적변수
  2. 내부정적변수

static변수는 프로그램이 시작 될 때 할당이 되고 프로그램이 끝날 때 없어짐.

초기화가 안 되어 있으면 0으로 초기화 해주게된다.

외부 정적 변수

외부 정적 변수 초기화

#include <stdio.h>

static int count;

int main()
{
	printf("%d", count);
}

0으로 초기화

static변수는 프로그램이 시작 될 때 할당이 되고 프로그램이 끝날 때 없어짐.

함수가 끝날 때 파괴되는 변수가 아니기에 함수가 끝나도 그 값을 기억하고 있을 수 있다.

전역으로 선언한 static 변수는 그 소스파일 내의 모든 함수에서 사용이 가능하다.

다른 소스 파일에서 사용하지 못함. 정보은닉(정보를 숨긴다) 효과가 있음.

결론

  1. 외부 정적 변수는 전역 변수라고 생각하면 된다.
  2. 소스 파일 내에서 함수 어디에서도 사용 가능.
  3. 단, 다른 소스 파일에서는 사용하지 못한다.

내부정적변수

내부 정적 변수 예제

#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 변수는 파괴되지 않고 값을 계속 가질 수 있다는 것을 알 수 있었다.

결론

  1. 함수가 여러번 실행되더라도 초기화는 한 번만 이루어진다.
  2. 내부정적변수는 다른 함수에서는 참조할 수가 없다.

 

정리

외부정적변수

  1. 외부 정적 변수는 전역 변수라고 생각하면 된다.
  2. 소스 파일 내에서 함수 어디에서도 사용 가능.
  3. 단, 다른 소스 파일에서는 사용하지 못한다.

내부정적변수

  1. 함수가 여러번 실행되더라도 초기화는 한 번만 이루어진다.
  2. 내부정적변수는 다른 함수에서는 참조할 수가 없다.

참고 블로그

C언어 static변수(정적변수)

 

C언어 static변수(정적변수)

C언어 static변수(정적변수)C언어 static변수에 대해 알아보려고하는데요. static변수는 한글로는 ...

blog.naver.com

 

반응형