전역 변수,지역변수 그리고 static 변수

NOAH·2021년 2월 18일
0

전역변수

  • 전역변수는 함수외부에 선언된다.
  • 프로그램의 시작과 동시에 메모리공간에 할당되어 종료시까지 존재한다.
  • 별도의 값으로 초기화 하지 않으면 0으로 초기화된다.
  • 프로그램 전체 영역 어디서든지 접근 가능하다.

프로그램 전체영역에서 접근이 가능한 전역변수는 많이 쓰면 좋지않다. 전역변수의 변경이 전체 프로그램의 변경으로 이어질 수 있다. 전역변수에 의존적인 코드는 프로그램 전체에 걸쳐서 찾아내야 한다.

static 변수

전역변수와 성격이 같다(전역 변수+a). 딱 1회 초기화되어 프로그램 종료시까지 메모리 공간에 존재한다. 하지만 접근권한은 선언된 함수내에서만 접근이 가능하다.

register 변수

원래 register는 CPU내부에 존재하는 접근이 가장 빠른 메모리 장치이다.

int simple(void)
{
 register int num1 = 3;
}

"컴파일러야, 이 변수는 빈번히 사용되는 것이니, 가장 빠른 레지스터에 저장하는 것이 성능향상에 도움이 될거야!" 라는 의미를 가진다.

이해적인 측면에서는 그러하지만 실용적 측면에서는 register 변수로 선언한다 하더라도 컴파일러가 알아서한다..

재귀함수

자기자신을 호출하는 함수, 재귀함수?

함수에 자기 자신을 호출하는 재귀 명령어가 CPU가 읽는 순간!
메모리에 한번 더 그 함수가 올라가게 된다.

이 무한루프를 종결시키기 위한 종결조건이 필요하다.

탈출조건이 성립할 때, 반환은 그 함수를 호출한 이전 재귀 함수로 반환된다.
호출의 역순으로 반환되어 결국 맨 첫번째 함수로 반환이 된다.

0개의 댓글