다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

c언어 프로그램 다양한 형식의 지역변수

C언어 알고리즘 2015. 8. 5. 22:10


■ 지난 글에서 지역변수의 개념을 정리해봤었는데요. 이번에는 좀 더 다양한 몇 가지 Local Variable에 대해서 알아보겠습니다. 개념 정리하면서 지역변수는 중괄호{}안에 선언되는 변수라고 했습니다. 그런데 이 중괄호는 함수에서만 사용되는 게 아니고 if 문이나 for 문처럼 제어문에서도 사용되는데요. 이런 제어문 안에 선언된 변수도 지역변수입니다. 그래서 괄호 시작 시점에서 메모리에 할당되며 중괄호가 끝날 때(제어문 빠져나오는 시점) 메모리에서 소멸하게 되는데요. 다음 코드를 보겠습니다. 

▲ 어떤 값들이 출력될지 대충 예상되는 간단한 for 문인데요. 일단 프로그램을 실행부터 해보겠습니다. 


▲ 예상했던 결과가 출력됐나요? for 문은 5번 반복되는 게 맞는데... 왜 계속 x의 값이 '1'이 출력되는지 아시겠나요? 지역변수를 확실히 이해하고 계시면 간단한 내용이죠.

 

 

■ 프로그램의 실행 순서를 간단하게 정리하자면 for 문이 실행돼서 중괄호를 지나면서 x는 메모리에 0으로 초기화됩니다. 그리고 x++로 1이 증가하게 되고 출력되는 x의 값은 1이 됩니다. 그렇게 값을 출력하고 첫번째 for 문이 종료되면서 중괄호를 빠져나가게 되죠. 이 순간 지역변수인 x는 메모리에서 소멸합니다. 그리고 두 번째 실행되면서 다시 메모리에 0으로 할당됩니다. 역시 for문을 실행하면서 1이 증가해서 출력되고 반복문을 빠져나가면서 다시 소멸하는 과정을 계속 반복하기 때문에 x의 값은 계속 1만 출력되는 것입니다. 


 이처럼 제어문에서 사용하는 변수들도 지역변수의 특징을 갖고 있는 걸 확인해봤고요. 다음은 지역변수의 특징 중에서 외부에 선언된 동일한 이름의 변수를 가리키는 특성에 대해서 알아볼게요. 이 역시 예제를 보면서 확인하겠습니다.

▲ 두 개의 x를 각각 main() 함수와 if 문에 선언하고 있는데요. if 문 안에서 x의 값을 출력하면... 당연히 그 안에 있는 20이 출력됩니다. 그리고 if 문 밖에서 x 값을 출력하면 main() 함수에 선언된 10이 출력되겠죠? 확인해보겠습니다. 


▲ 실행결과에서 보듯이 각각의 x 값을 출력하게 됩니다. 이때 만약에 if 문 안에 x 변수가 없다면 어떤 값을 출력하게 될까요?


▲ 확인하기 위해서 변수를 주석처리 했습니다. 첫 번째 출력되는 x의 값은 얼마가 될까요? 여기서 또 지역변수의 특징 중의 또 하나를 확인할 수 있는데요. 이렇게 중괄호 안에 해당 변수가 없다면 바깥쪽에 있는 같은 이름의 변수를 가리키게 됩니다. 그래서 두 개의 x 모두 바깥에 있는 변수 x=10을 출력하게 됩니다. 확인해보고 마무리할게요.^^


 이렇게 해서 제어문에서 사용되는 변수도 지역변수라는 걸 확인해봤습니다. 수고하셨어요.

저작자표시 비영리 변경금지
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바