상세 컨텐츠

본문 제목

c 언어 함수의 지역변수 & 전역변수

C_language

by 헬로제이콥 2024. 8. 27. 02:58

본문

 

 

C언어의 비밀 상자: 지역변수와 전역변수

1. 서랍장과 금고의 비밀

상상해 보자: 너희 집에는 여러 개의 서랍장이 있고, 그 안에 다양한 물건을 보관하지? 그리고 집 어딘가에 중요한 물건을 넣어두는 금고가 있을 거야.

  • 서랍장: 서랍장은 각 방마다 있고, 각 서랍장에는 그 방에서만 사용하는 물건들을 넣어두지. 이 서랍장이 바로 지역변수와 비슷해.
  • 금고: 금고는 집 어디에서든 누구나 열어서 사용할 수 있는 공간이야. 이 금고가 바로 전역변수와 비슷해.

2. 컴퓨터 속의 서랍장과 금고

C언어에서도 이런 서랍장과 금고가 있어.

  • 지역변수: 함수라는 특별한 공간 안에서만 사용되는 변수야. 함수가 끝나면 사라져 버려. 마치 방을 나갈 때 서랍장에 넣어둔 물건을 다시 꺼내지 않고 그대로 두는 것과 같아.
  • 전역변수: 프로그램 어디서든 사용할 수 있는 변수야. 프로그램이 시작될 때 만들어지고 프로그램이 끝날 때까지 계속 존재해. 마치 집 어디서든 사용할 수 있는 금고와 같아.
#include <stdio.h>

// 전역 변수 (금고)
int global_money = 1000; // 전 세계 어디서든 사용 가능한 돈

void myRoom() { // 내 방
    int myToy = 5; // 내 방에 있는 장난감 (지역 변수)
    printf("내 방에 있는 장난감: %d개\n", myToy);
    printf("내가 가진 용돈: %d원\n", global_money);
}

int main() {
    int myBook = 3; // 내 책상 위에 있는 책 (지역 변수)
    printf("내 책상 위에 있는 책: %d권\n", myBook);
    printf("내가 가진 용돈: %d원\n", global_money);
    myRoom();
    return 0;
}

설명:

  • global_money: 프로그램 어디서든 사용할 수 있는 용돈 (전역 변수)
  • myToy, myBook: 각각 내 방과 책상에서만 사용하는 물건 (지역 변수)
  • myRoom 함수: 내 방에서 일어나는 일들을 나타내는 함수

4. 정리

  • 지역 변수: 함수 안에서만 사용되는 변수. 함수가 끝나면 사라짐.
  • 전역 변수: 프로그램 어디서든 사용할 수 있는 변수. 프로그램이 시작될 때 만들어지고 끝날 때까지 유지됨.

5. 왜 지역 변수와 전역 변수를 나눠서 사용할까?

  • 정리하기 쉽다: 각 함수마다 필요한 변수만 사용하면 프로그램을 이해하기 쉽다.
  • 오류를 줄일 수 있다: 전역 변수를 많이 사용하면 어디서 값이 변경될지 알 수 없어서 프로그램이 복잡해지고 오류가 발생할 가능성이 커진다.

6. 중요!

  • 전역 변수는 너무 많이 사용하면 안 돼: 마치 금고에 너무 많은 물건을 넣어두면 정리가 안 되고 찾기 어려운 것처럼, 전역 변수를 많이 사용하면 프로그램이 복잡해져서 관리하기 어려워진다.
  • 지역 변수를 잘 활용하자: 각 함수에서 필요한 변수만 사용하면 프로그램을 깔끔하게 만들 수 있다.

 

 

뭘 좀 아시는 분은 아래 예제를 분석해 봅시다.!!

#include <stdio.h>

// 전역 변수 선언
int global_var = 10;

void myFunction() {
    // 전역 변수를 직접 사용
    printf("함수 내 전역 변수 global_var: %d\n", global_var);
}

int main() {
    // 지역 변수 선언
    int local_var = 20;
    global_var = global_var + 100; // 전역 변수 값 변경

    printf("지역 변수 local_var: %d\n", local_var);
    printf("전역 변수 global_var: %d\n", global_var);

    // 함수 호출
    myFunction();

    return 0;
}

 

  • myFunction 함수 내에서 local_var = 30; 부분을 삭제하고, global_var를 직접 사용하여 출력하도록 변경했습니다.
  • 이렇게 수정하면 myFunction 함수 내에서도 main 함수에서 변경된 global_var의 값 110이 출력됩니다.

 

결과:

지역 변수 local_var: 20
전역 변수 global_var: 110
함수 내 전역 변수 global_var: 110

핵심:

  • 전역 변수는 프로그램 어디에서든 접근하고 변경할 수 있습니다.
  • 함수 내에서 전역 변수를 사용하려면 전역 변수의 이름을 직접 사용해야 합니다.
  • 함수 내에서 같은 이름의 변수를 선언하면 지역 변수로 취급되어 전역 변수와는 별개로 관리됩니다.

추가 설명:

  • 전역 변수의 단점: 전역 변수는 프로그램의 어느 부분에서든 값이 변경될 수 있기 때문에 예기치 못한 문제를 발생시킬 수 있습니다. 가능한 한 지역 변수를 사용하여 코드의 가독성을 높이고 오류를 줄이는 것이 좋습니다.
  • static 변수: 함수 내에서 선언되지만 함수 호출 사이에도 값이 유지되는 변수입니다. 전역 변수와 지역 변수의 중간적인 성격을 가지고 있습니다.

 

결론:

  • 위와 같이 코드를 수정하면 myFunction 함수 내에서도 global_var의 값이 110으로 정확하게 출력됩니다. 전역 변수와 지역 변수의 개념을 명확하게 이해하고 적절하게 사용하는 것이 중요합니다.

'C_language' 카테고리의 다른 글

c 언어 포인터  (0) 2024.08.27
c언어 함수를 활용한 사용한 간단한 예제  (0) 2024.08.27
c 언어 배열에 대해 알려줄께?  (0) 2024.08.27
c언어 함수 선언과 정의  (0) 2024.08.27
c언어 switch 문  (0) 2024.08.27

관련글 더보기