ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어 변수
    Programming/C 2016. 5. 2. 20:22

    변수

    지역변수(Local Variable)

    • 함수 내에만 존재 및 접근이 가능하다.
    • '지역'이란 중괄호에 의해 형성되는 영역
    • 지역변수는 '스택'이라는 메모리 영역에 할당된다.
    • 지역변수는 접시에 쌓듯이 할당된다.
    • 메모리 공간에 해당 선언문이 실행될 때 할당되었다가 선언문이 존재하는 함수가 반환을하면(종료) 메모리 공간에서 소멸된다.
    • 매개변수: 지역변수의 일종
      • 선언된 함수 내에서만 접근이 가능
      • 선언된 함수가 반환을 하면, 지역변수와 마찬가지로 소멸이 된다.

    전역변수

    • 어디서든 접근이 가능한 변수
    • 지역변수와 달리 중괄호 내에서 선언되지 않는다.
    • 기본 0으로 초기화된다.
    • 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재한다. - 전역변수와 동일한 이름의 지역변수가 선언되면 해당 지역 내에서는 전역변수가 가리워지고, 지역변수로의 접근이 이루어진다.
      • 그냥 이름을 달리하는 게 좋다!!
    • 전역변수는 프로그램의 구조를 복잡하게 만드는 주범

    스파게티 코드
    소프트웨어 공학에서는 전역변수의 과도한 선언과 같은 잘못된 프로그래밍 방식에 의해서 생성된 얽히고 설킨 코드를 가리켜 '스파게티 코드'라 한다.

    static 변수

    • 지역변수에 static 선언이 붙게 되면 전역변수의 성격을 지니는 변수가 된다.
    • 지역변수에 static 선언이 붙게 되면,
      • 선언된 함수 내에서만 접근 가능하다. (지역변수의 특성)
      • 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다. (전역변수 특성)
    • 전역변수보다 안정적이다.

    register 변수

    • 지역변수에 register 선언을 추가한 변수
    • CPU 내에 존재하는 '레지스터'라는 메모리 공간에 저장될 확률이 높다.
    • 연산이 빠르다.
    • 컴파일러가 레지스터의 활용여부를 결정한다. 아무리 register 선언을 추가한다고 해도 컴파일러가 합당하지 않다고 판단하면 레지스터에 할당되지 않는다.

    'Programming > C' 카테고리의 다른 글

    C언어 Call-by-value vs. Call-by-reference  (0) 2016.05.02
    C언어 포인터 배열  (0) 2016.05.02
    c언어 포인터  (0) 2016.05.02
    1차원 배열  (0) 2016.04.30
    도전 프로그래밍1  (0) 2016.04.30

    댓글

Designed by Tistory.