Notice
Recent Posts
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
관리 메뉴

도슐랭스타

C언어-기억 부류 지정자 본문

C언어

C언어-기억 부류 지정자

도도.__. 2023. 9. 26. 11:55

지역 변수와 전역 변수

  • 지역 변수와 전역 변수는 선언 위치에 따라서 결정된다.
  • 지역 변수 : 해당 함수나 블록 안에서만 사용이 가능하다.
  • 전역 변수 : 소스 전체에서 사용이 가능하다.

기억 부류 지정자(storage class specifier)

  • 변수와 함수의 생명주기(life time)와 가시성 범위(space)를 지정하여 어떤 종류의 메모리에 저장되는지 지정한다.
    생명주기 : 언제 생기고 사라지는가 / 가시성 범위 : 어떤 곳에서 접근이 가능한가

auto(자동) 변수

  • 가장 많이 사용하며 생략이 가능하다.(지금까지 따로 지정하지 않았다면 지역 변수는 전부 auto 였던 것!)
  • 지역 변수이다.
  • 스택(stack) 공간을 일시적을 사용한다. -> 블록이나 함수를 벗어나면 기억영역이 소거된다!
  • 초기화는 실행시 이루어지며 초기화하지 않으면 쓰레기 값을 가진다.

register(레지스터) 변수

  • CPU 내의 레지스터에 저장한다.
  • CPU 내부에 저장하므로 고속 처리가 가능하며 작고 빠르다.
  • CPU 레지스터에 직접 저장되기 때문에 메모리 주소가 없으며 따라서 레지스터 변수에 대한 주소를 참조할 수 없다.("&" 사용 불가능)
  • 4byte의 데이터만 저장이 가능하다.(정수형, 포인터 등)
int main() {
    int x = 10;   // auto 변수
    register int y = 20;   // register 변수

    int *ptr_x = &x;   // auto 변수의 주소를 가져옴.
    int *ptr_y = &y;   // register 변수의 주소는 가져올 수 없음.

    return 0;
}

static(정적) 변수

  • 프로그램이 종료될 때까지 값을 유지한다.(auto와의 차이점!)
  • 처음 실행시 한 번만 초기화를 한다. 초기화 값이 없으면 0으로 초기화한다.
  • 정적 데이터 영역에 저장한다.
  • 지역 static 변수는 그 블록 내에서만 접근이 가능하다.
  • 전역 변수는 기본적으로 static이며 생략이 가능하다.(지금까지 따로 지정하지 않았다면 전역 변수는 전부 static이던 것!)

extern 변수

  • 기억 장소가 할당되지 않은 변수이다.
  • 프로그램의 다른 파일에 선언된 변수를 해당 파일에서 사용하는 것이다.


도슐랭스타
★★★☆☆ : 너무 신기햄!!
우와 생략해도 알아서 해주니 지금까지 전혀! 몰랐는데 이런 게 있었다니! 너무 신기하다..! 전자계산기 구조에서 배운 후입선출..? 나중에 들어온 데이터가 먼저 나가는 그 뭐시기도 있었던 것 같은데 조금 더 공부해서 이 부분은 또 올려야겠담.


출처 : https://www.youtube.com/@smilehan8416/playlists

 

Smile Han

www.youtube.com

 

반응형

'C언어' 카테고리의 다른 글

C언어-함수  (0) 2023.09.23
C언어-제어문  (0) 2023.09.16
C언어-연산자  (0) 2023.09.08
C언어-전처리기  (0) 2023.09.03
C언어-표준 라이브러리 함수  (0) 2023.07.25
Comments