[정보처리기사 필기] 프로그래밍 언어 활용 - 098. 변수

1. 변수의 개요

  • 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간
  • 변할 수 있는 값
  • 저장하는 값에 따라 구분 : 정수형, 실수형, 문자형, 포인터형 등

2. 변수명 작성 규칙

  • 전체 문자 적용 규칙
    • 사용할 수 있는 문자 : 영문자, 숫자, _(under bar) 
    • 사용할 수 없는 문자 : 공백, _을 제외한 특수문자
  • 첫 글자 제약 규칙
    • 사용할 수 있는 문자 : 영문자, _(under bar)
    • 사용할 수 없는 문자 : 숫자
  • 기타 규칙
    • 글자 수에 제한이 없음
    • 대소문자 구분
    • 예약어를 사용할 수 없음
      • 예약어 : 정해진 기능을 수행하도록 이미 용도가 정해져 있는 단어, 변수 이름이나 다른 목적으로 사용할 수 없음
      • C언어의 예약어
        구분 예약어
        제어문 반복 do, for, while
        선택 case, default, else, if, switch
        분기 break, continue, goto, return
        자료형 char, double, enum, float, int, long, short, signed, struct, typedef, union, unsigned, void
        기억 클래스 auto, extern, register, static
        기타 const, sizeof, volatile
    • 변수 선언 시 문장 끝에 반드시 세미콜론(;)을 붙여야 함
    • 헝가리안 표기법 준수
      • 헝가리안 표기법 Hungarian Notation
        • 변수 선언 시 변수명에 데이터 타입을 명시하는 것
        • 변수의 자료형을 알 수 있도록 자료형을 암시하는 문자를 포함하여 작성하는 방법

3. 기억 클래스

  • 변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당 되는 기억영역에 따라 사용 범위에 제한되는데, 이러한 기억영역을 결정하는 작업
  • C언어에서의 기억 클래스
    종류 기억영역 예약어 생존기간 사용범위
    자동 변수 메모리(스택) auto (생략 가능) 일시적 지역적
    레지스터 변수 레지스터 register
    정적 변수 (내부) 메모리(데이터) static 영구적
    정적 변수 (외부) 전역적
    외부 변수 extern
    • 자동 변수 Automatic Variable 
      • 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
      • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸
      • 초기화하지 않으면 쓰레기값 Cabage Value (메모리의 데이터를 변경하기 전에 마지막으로 남아 있던 데이터) 이 저장됨
    • 외부 변수 External Variable 
      • 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조 reference 하기 위한 변수
      • 외부 변수는 함수 밖에서 선언
      • 함수가 종료된 뒤에도 값이 소멸되지 않음
      • 초기화하지 않으면 자동으로 0으로 초기화
        • 초기화 : 변수를 선언할 때, 선언된 변수에 처음 값을 저장하는 것, 초기화 이후에 저장된 값을 변경할 때는 대입, 저장이라고 함
      • 다른 파일에서 선언된 변수를 참조할 경우 초기화할 수 없음
    • 정적 변수 Static Variable 
      • 함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수
      • 내부 정적 변수는 선언한 함수나 블록 내에서만 사용할 수 있고, 외부 정적 변수는 모든 함수에서 사용할 수 있음
      • 두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않음
      • 초기화는 변수 선언 시 한번만 할 수 있으며, 초기화를 생략하면 자동으로 0으로 초기화
    • 레지스터 변수 Register Variable 
      • 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수
      • 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용
      • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸
      • 레지스터의 사용 개수는 한정되어 있어 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당
      • CPU에 저장되어 메모리 주소를 가질 수 없기 때문에 변수의 주소를 구하는 주소 연산자(&)를 사용할 수 없음

4. 변수의 선언

  • 자료형 변수명 = 값;
    • 자료형 : 변수에 저장될 자료의 형식을 지정
    • 변수명 : 사용자가 원하는 이름을 임의로 지정 (변수명 작성 규칙에 맞게 지정)
    • 값 : 변수를 선언하면서 초기화할 값을 지정, 값은 지정하지 않아도 됨

5. 변수를 상수로 만들어 사용하는 방법

  • 심볼릭 Symbolic 상수 : 변수처럼 상수에 이름을 붙여 기호화하여 사용
    • 상수 Constant : 프로그램이 시작되어 값이 한 번 결정되면 프로그램이 종료될 때까지 변경되지 않는 정보
  • 변수를 상수로 만들어 사용하는 이유 : 변수에 저장된 값이 프로그램이 종료될 때까지 변경되지 않도록 상수로 만들어 사용
  • C언어에서의 예약어 : const

6. 가비지 콜렉터 Garbage Collector

  • 카비지 콜렉션 Garbage Collection : 변수를 선언만 하고 사용하지 않으면 이 변수들이 점유한 메모리 공간은 다른 프로그램들이 사용할 수 없게 됨 -> 선언만 하고 사용하지 않는 변수들이 점유한 메모리 공간을 강제로 해제하여 다른 프로그램들이 사용할 수 있도록 하는 것
  • 가비지 콜렉터 Garbage Collector : 가비지 콜렉션 기능을 수행하는 모듈