Menu
Coddy logo textTech

변수 범위

Coddy의 C 언어 함수 코스 레슨 — 17개 중 5번째.

각 변수는 스코프(scope)를 가지며, 이는 프로그램에서 해당 변수를 사용할 수 있는 부분입니다. 변수는 전역(global) 또는 지역(local) 변수가 될 수 있습니다.

지역 변수

지역 변수는 함수와 같은 코드 블록 내부에서 생성되며, 그 안에서만 존재합니다. 이러한 변수들을 위한 메모리는 블록이 시작될 때 할당(allocated)되고, 블록이 끝날 때 해제(deallocated)되어 변수가 제거됩니다.

#include <stdio.h>
void message() {
   char *msg = "Coddy";
   printf("%s \n", msg);
}
int main(void) {
   char *title = "tech";
   message();
   printf("%s \n", title);
   return 0;
}

message 함수에서는 msg 변수가 정의되어 있습니다. 마찬가지로, main 함수는 title 변수를 정의합니다. 이 변수들은 각각의 함수 외부에서는 사용할 수 없습니다. 예를 들어, msg 변수의 스코프는 message 함수로 제한되어 있기 때문에 main 함수에서 사용할 수 없습니다.

동일한 원칙이 if, else, switch, case, for, while, do..while 루프와 같은 중첩된 코드 블록 내에 정의된 변수에도 적용됩니다.

전역 변수

전역 변수는 프로그램 파일 내의 모든 함수 외부에서 정의됩니다. 이 변수들은 해당 파일 내의 어떤 함수에서도 사용될 수 있습니다.

#include <stdio.h>
int a = 12;
void increment()
{
   a++;
   printf("a=%d \n", a);
}
int main(void)
{
   increment();          
   a++;
   printf("a=%d \n", a);    
    
   return 0;
}

출력 결과:

a=13 
a=14 

여기서 변수 a는 전역적으로 선언되었기 때문에 모든 함수에서 접근할 수 있습니다.

 

challenge icon

챌린지

쉬움

전역 변수를 사용해 보세요:

  • 어떤 함수 밖에서도 <strong>gv</strong>라는 이름의 전역 변수를 정의하고 20이라는 값을 할당하세요. 
  • 이 전역 변수를 사용하도록 increment 함수를 수정하세요. 
  • 전역 변수를 감소시키고 그 값을 출력하는 새로운 함수 decrement를 작성하세요. 
  • main 함수에서 변수의 값을 출력하세요.

출력은 다음과 같아야 합니다:

Global variable after increment: 21 
Global variable after decrement: 20 
Global variable in main: 20 

직접 해보기

#include <stdio.h>

// gv라는 이름의 전역 변수를 정의하고 값 20을 할당합니다


// increment 함수를 수정합니다
void increment() {
   
    printf("Global variable after increment: %d \n", gv);
}

// decrement 함수를 정의합니다


int main(void) {
    
    increment();
    decrement();
    // 변수를 출력합니다 
    
    return 0;
}

C 언어 함수의 모든 레슨