Search
Duplicate

[C] 지역변수, 전역변수, 정적변수, 레지스터변수 간단비교

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
C
Scrap
태그
9 more properties

지역변수(local variable)

의미: 블록{} 내에서 선언된 변수를 의미한다.
접근: 변수가 선언된 블록 내에서만 접근할 수 있다.
범위: 블록이 종료되면 메모리에서 사라진다.
함수의 매개변수 또한 함수 내에서 정의된 지역변수로 취급한다.
메모리: 메모리상 스택(stack)영역에 저장됨.
초기화: 초기화하지 않으면 의미없는 값(쓰레기값)으로 초기화된다.

전역변수(global variable)

의미: 함수 외부에서 선언된 변수를 의미한다.
접근: 프로그램 어디서나 접근할 수 있다.
범위: 프로그램이 종료되면 메모리에서 사라진다.
메모리: 데이터 여역에 저장됨.
초기화: 직접 초기화하지 않아도 0으로 자동 초기화 된다.

정적변수(static variable)

의미: static키워드로 선언한 변수를 의미한다. 지역변수와 전역변수의 특징을 모두 가진다.
접근: (지역변수) 변수가 선언된 블록 내에서만 접근할 수 있
범위: (전역변수) 프로그램이 종료되어야 메모리에서 사라진다
메모리: (전역변수) 메모리상 데이터 여역에 저장됨
초기화: (전역변수) 단 한 번만 초기화 된다

레지스터변수(register variable)

의미: 지역변수를 선언할 때 register키워드를 붙여 선언한 변수를 의미한다.
접근: CPU의 레지서트 메모리에 저장되어 빠르게 접근할 수 있다.
한계: 컴퓨터의 레지스터는 매우 작은 크기의 메모리로, 이 영역에 변수를 선언하기 힘든 경우도 많다. 그럴 때 C컴파일러는 해당 변수를 그냥 지역변수로 선언한다.
참조