컴퓨터 프로그래밍/C

C언어 변수 (지역/전역변수)

나노콛 2019. 7. 23. 10:19

변수 - 저장공간


[지역 변수]

함수 내부에서 생성
생성한 함수 내부에서만 사용 가능

사용될 때 stack에 변수 공간 할당
함수 종료 혹은 리턴하면 할당된 지역변수 메모리 소멸

생성만 했을 때 쓰레기 값으로 초기화

[전역 변수]

함수 외부에서 선언
같은 소스 코드 내  모든 곳에서 사용 가능

컴파일 시 메모리 할당
프로그램 종료하면 메모리 소멸

생성만 했을 때 0으로 초기화


변수의 적용 범위

 

#include <stdio.h>

int global = 10;    //전역 변수 생성 초기화

int func()             //사용자 함수
{
  int x = 0;
  int y = 1;

  return x + y + global;
}

int main()             // 프로그램 시작점
{
  int a = 0;
  a = func();
  global += a;

  printf("global = %d\n",global);

  printf("a : %d\n", a);

  return 0;
}

소스 코드는 간단합니다.
그러나 main() 함수 외에 func() 함수가 또 있는 것이 보입니다.
이것은 사용자가 직접 만든 함수입니다.

함수를 만들고 사용할 수 있습니다.

함수 앞에 int는 함수의 반환형을 나타냅니다.
return을 만나면 int형 즉 정수형 값을 반환하게 함수입니다.
이 되는 것입니다. 함수를 만드는 사람이 정하게 됩니다.
리턴 타입이 없는 void형 함수도 있습니다.

전역 변수 global을 선언하고 10으로 초기화했습니다.
이제부터 이 함수는 프로그램 종료하기 전까지 어디서는 사용이 가능합니다.

main() 함수로 와서
main 함수 내부에서만 사용이 가능한 a 변수를 생성했습니다.
그리고 a에 func() 함수의 반환 값을 대입하게 했습니다.
이제 func() 함수로 가서 반환 과정을 확인하면 됩니다.

func() 함수 내부에서만 사용이 가능한
x y 변수를 생성 초기화했습니다.

return을 만나면 x + y + global 값을 반환하게 됩니다.

그리고 x y 변수의 메모리는 소멸됩니다.

반환된 값 11을 a에 대입합니다.
global 변수에 a 값을 더합니다.

main() 함수 내부에서 func() 함수의 x y 변수를 쓸 수 없습니다.