본문 바로가기

~2023

[C] C 언어 - 함수와 변수(전역변수와 지역변수)

728x90
반응형

오늘은 함수와 변수의 관계에 대해 공부를 해볼 것이다.

 

먼저 전역변수와 지역변수에 대해 알아보도록 하자

 

변수의 속성으로는 이름, 타입, 크기, 값 + 범위, 생존 시간, 연결 등이 있다.

 

변수의 속성

 

범위(scope): 변수가 사용 가능한 범위, 가시성

생존 시간(lifetime): 메모리에 존재하는 시간

연결(likage): 다른 영역에 있는 변수와의 연결 상태

 

즉, 모든 변수는 어느 부분에서 생성되어(생성) 어떠한 범위까지 변수가 존재하다가(생존시간)

그 범위를 벗어나면 삭제된다.

 

변수의 범위

 

위와 같이 변수의 범위에 따라 전역변수와 지역변수로 나뉜다.

전역변수는 프로그램이 실행될 때 생성되며 종료될 때 삭제된다.

반면에 지역변수는 {}(블록)이 시작될 때 생성되며 {}(블록)이 끝날 때 삭제된다.

 

아래는 지역 변수에 대한 예제이다

#include<stdio.h>

int main(){

	int i;
    
    for(i = 0; i < 5; i++){
    	int temp = 1;
        printf("temp = %d\n", temp);
        temp++;
    }
    
    return 0;
}

temp++로 인해 tmep 값이 1씩 +되서 출력되어야 하지만

for문이라는 블록 안에 temp가 있기 때문에

반복할 때마다 생성삭제가 되서 값이 1로 고정이 된다.

 

함수의 매개변수 또한 지역변수의 일종이다.

 

아래는 전역변수에 대한 예제이다.

#include<stdio.h>
int A; // 전역변수 초기값은 0
int B;
int add()
{
	return A + B;
}

int main()
{
	int answer;
	A = 5; // 전역변수는 변수 선언 안해도 됨
	B = 7;
	answer = add(); // 5 + 7
	printf(“%d + %d = %d\n”, A, B, answer);
	return 0;
}

A와 B는 전역변수로 선언하면서

이 소스파일이 실행되는 동안 생존해 있기 때문에

main함수 안에서 변수 선언을 하지 않아도

A와 B 변수를 사용할 수 있다.

 

 

728x90
반응형