정적 변수(Static variable)

이형래·2020년 10월 19일
3

42seoul

목록 보기
2/4

정적 변수(Static variable)

1. 정적변수란?

: 정적 변수는 일반적인 auto변수 또는 dynamic변수와 작동 방식이 다르다. 정적 변수는 프로그램 시작 시 메모리에 할당되고, 프로그램 종료 시 메모리가 해제된다.(변수의 범위를 벗어나도 값을 유지한다.)

: 이러한 정적 변수는 프로그램의 수정, 유지 보수, 재사용을 어렵게하는 단점이 있는 전역 변수의 단점을 부분적으로 보완한다고 볼 수 있다. (물론 정적변수와 전역변수가 아예 다르다 라는 뜻은 아님)

2. 사용법

static 자료형 변수이름;

변수를 선언할 때 자료형 앞에 static키워드를 붙여 사용.

3. static 지역 / static 전역

: static 지역 변수는 함수 블록을 벗어나도 값이 사라지지 않지만, 변수를 선언한 함수 블록 안에서만 접근할 수 있다.

: static 전역 변수는 해당 소스 파일의 다른 함수에서도 접근할 수 있다. 하지만 다른 소스 파일에서 extern으로 static 전역 변수를 호출하면 컴파일에러가 발생한다.
즉, 자신이 선언된 소스 파일 내에서만 사용 가능하다.
이를 이용해 전역 변수에 static을 붙여 변수의 범위를 해당 소스 파일로 제한할 수 있다.

4. 특징

1) 초기화를 하지 않아도 자동으로 0이 저장됨.

2) 초기화는 한번만 수행.
: 적정 지역 변수가 선언된 함수를 여러번 호출하거나, 반복문의 중괄호 안에 정적 변수를 선언했더라도 초기화는 맨 처음 한번만 수행한다.

3) 함수의 매개변수로 사용할 수 없음.
: 함수의 매개변수에 static을 붙이더라도, 매개 변수는 정적 변수가 되지 않으며 값이 유지되지 않음. (잘못된 문법)

profile
프론트엔드 개발자 입니다. 최근에는 Flutter를 이용한 크로스 플랫폼 앱 개발에 관심이 많습니다.

0개의 댓글