변수 - 저장공간
[지역 변수]
함수 내부에서 생성
생성한 함수 내부에서만 사용 가능
사용될 때 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 변수를 쓸 수 없습니다.
'컴퓨터 프로그래밍 > C' 카테고리의 다른 글
C언어 파일 입출력 (0) | 2019.07.23 |
---|---|
C언어 구조체 (구조체 포인터 / typedef) (0) | 2019.07.23 |
C언어 rand() srand() time() 함수 (난수 생성) (0) | 2019.07.23 |
C언어 제어문 (switch~case / break / continue) (0) | 2019.07.18 |
C언어 제어문 (while / do while / for) (0) | 2019.07.18 |