지역변수(local variable)
•
의미: 블록{} 내에서 선언된 변수를 의미한다.
•
접근: 변수가 선언된 블록 내에서만 접근할 수 있다.
•
범위: 블록이 종료되면 메모리에서 사라진다.
함수의 매개변수 또한 함수 내에서 정의된 지역변수로 취급한다.
•
메모리: 메모리상 스택(stack)영역에 저장됨.
•
초기화: 초기화하지 않으면 의미없는 값(쓰레기값)으로 초기화된다.
전역변수(global variable)
•
의미: 함수 외부에서 선언된 변수를 의미한다.
•
접근: 프로그램 어디서나 접근할 수 있다.
•
범위: 프로그램이 종료되면 메모리에서 사라진다.
•
메모리: 데이터 여역에 저장됨.
•
초기화: 직접 초기화하지 않아도 0으로 자동 초기화 된다.
정적변수(static variable)
•
의미: static키워드로 선언한 변수를 의미한다. 지역변수와 전역변수의 특징을 모두 가진다.
•
접근: (지역변수) 변수가 선언된 블록 내에서만 접근할 수 있
•
범위: (전역변수) 프로그램이 종료되어야 메모리에서 사라진다
•
메모리: (전역변수) 메모리상 데이터 여역에 저장됨
•
초기화: (전역변수) 단 한 번만 초기화 된다
레지스터변수(register variable)
•
의미: 지역변수를 선언할 때 register키워드를 붙여 선언한 변수를 의미한다.
•
접근: CPU의 레지서트 메모리에 저장되어 빠르게 접근할 수 있다.
•
한계: 컴퓨터의 레지스터는 매우 작은 크기의 메모리로, 이 영역에 변수를 선언하기 힘든 경우도 많다. 그럴 때 C컴파일러는 해당 변수를 그냥 지역변수로 선언한다.
참조