전역변수 - 어디서든 접근이 가능한 변수, 지역변수와 달리 중괄호 내에 선언되지 않음.

                       프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재.

                       별도의 값으로 초기화하지 않으면 0으로 초기화된다.

                       프로그램 전체 영역 어디서든 접근이 가능. 될 수 있으면 줄여서 써야한다.

                       그러나 자주 생겼다 지워졌다하는 변수가 있으면 느려져서 전역변수를

                       생성하는 게 낫다. 하나의 전역변수만으로 프로그램이 복잡해질 수 있다.

 

지역변수 : Run Time()

전역변수 : Compile Time 실행파일

전역변수 - 초기화 시킨 변수들은 Data영역 주소로 들어감.

초기화 시키지 않은 변수들은 BSS영역 주소로 들어감.

 

메모리구조

Code - 함수. 상수가 포함됨Read Only

Data - 전역변수 초기화시킨 변수

BSS - 전역변수 초기화안시킨 변수.

         어떤 변수가 들어오든 0으로

         BSS자체가 0으로 덮여있음.

heap - 동적할당

stack - 지역변수

 

 

프로그램영역

행위(사고,ALU(연산담당))

기억(레지스터)

(CU) 컴퓨터는 인간을 모델링함.

(예시1)


해당 지역 내에서는 전역변수가 가리워지고, 지역변수로의 접근이 이뤄진다.

(예시2)


 static 지역변수 - 선언된 함수 내에서만 접근이 가능하다. 함수 내에서 선언된 지역변수는 

            해당함수가 반환하면 소멸된다

1회 초기화되고 프로그램 종료 시 까지 메모리공간에 존재.

 (예시1)

(예시2)

재귀함수 - 자기 자신을 다시 호출하는 함수. 시스템에 치명적인 손상을 입힐 수 있다.




(예시1)


배열 - 다수의 데이터를 저장하고 처리하는 경우에 유용하게 사용할 수 있는 것.

             배열의 위치 정보를 명시하는 인덱스 값은 1이 아닌 0에서부터 시작.

 

int iNum[9];

int iCnt;

iNum[0] - 4byte

iNum[1] - 4byte

iNum[2] - 4byte

iNum[3] - 4byte

iNum[4] - 4byte

iNum[5] - 4byte

iNum[6] - 4byte

iNum[7] - 4byte

iNum[8] - 4byte

 (예시1)

(예시2)