c & c++/c언어 기초 개념

지역변수, 전역변수

일상코더 2022. 7. 18. 17:42

함수안에서 지역변수를 사용할때 변수가 증가 하지 않는다.

#include <stdio.h>

//변수의 종류
// 1. 지역변수 (스택 영역)
// 2. 전역변수 (데이터 영역)
// 3. 정적변수 (데이터 영역)
// 4. 외부변수 (데이터 영역)

//메모리 영역
// 1. stack 영역
// 2. data 영역
// 3. heap 영역
// 4. 읽기 전용(코드, ROM)

// 전역변수

int global = 0; //Data 영역

//Data 영역 틍직
//프로그램 시작 시 생성
// 프로그램 종료 시 해제

void Test()
{
	int n = 0;
   	 ++n;
}

int main()
{
	Test();  //n = 1
	Test();  //n = 1
	Test();  //n = 1


	return 0;
}

 

전역변수를 사용해서 함수를 실행하면 증가

#include <stdio.h>

int global = 0; //전역변수 선언

void Test();
int main()
{
	Test(); // global = 1 
	Test(); // global = 2
	Test(); // global = 3

	global = 0; //메인함수에서 0으로 초기화도 가능

	return 0;
}


void Test()
{
	++global;
}

 

지역변수와 달리 데이터 영역에 저장됨으로 프로그램 종료시에 종료됨