110 likes | 326 Views
9 장 변수 영역. 학습 목표. 지역 변수와 전역 변수 정적 변수 레지스터 변수. 지역 변수의 유효영역. 자동 지역변수. 전역 변수. 지역변수와 전역변수. 실행 결과. 프로그램 9-1. // main.c 파일 #include <stdio.h> #include "myheader.h" int gVal = 1; int main(void) { int value = 10; printf(" 지역 변수 value 값은 %d 이다 .<br>", value);
E N D
학습 목표 • 지역 변수와 전역 변수 • 정적 변수 • 레지스터 변수
지역변수와 전역변수 실행 결과 프로그램 9-1 // main.c 파일 #include <stdio.h> #include "myheader.h" int gVal = 1; int main(void) { int value = 10; printf("지역 변수 value 값은 %d 이다.\n", value); printf("전역 변수 gVal 값은 %d 이다.\n", gVal); A( ); printf("함수 A( ) 실행후 \n"); printf("지역 변수 value 값은 %d 이다.\n", value); printf("전역 변수 gVal 값은 %d 이다.\n", gVal); return 0; } // myheader.h void A( ); // func.c #include "myheader.h" extern int gVal; void A( ) { int value = 20; gVal++; }
변수의 유효영역 실행 결과 프로그램 9-2 #include <stdio.h> void A( ); int Number = 1; int main(void) { int Number = 10; printf("지역 변수 Number 값은 %d 이다.\n", Number); { int Number ; Number = 20; printf("블록 안의 지역 변수 Number 값은 %d 이다.\n", Number); } printf("내부 블록 밖의 Number 값은 %d 이다.\n", Number); return 0; } void A( ) { Number++; printf("전역 변수 Number 값은 %d 이다.\n", Number); }
정적변수 실행 결과 프로그램 9-3 #include <stdio.h> void CallNumber( ); int main(void) { int i; for(i =0 ; i < 5; i++) CallNumber( ); return 0; } void CallNumber( ) { static int count = 1; int number = 1; printf("%d 번째 호출되었습니다. \n",count++); printf("Number 값은 %d 이다. \n\n",number++); }
레지스터 변수 • 레지스터 변수 선언 • register 자료형 변수명; • 선언 예 • register int count = 1; • 특징 • 레지스터 변수의 데이터형은 int, char, short 및 포인터 형만이 가능하다. • 레지스터 변수는 CPU의 register에 저장되므로 처리 속도가 일반 변수보다 빠르다. • 반복문의 첨자를 register 변수로 사용하는 경우가 많다.
레지스터 변수 실행 결과 프로그램 9-4 #include <stdio.h> int main(void) { register int count = 1; int result = 0; for(count = 1 ; count <= 5; count++) result += count; printf(" 1부터 5까지의 합은 %d 이다.\n", result); return 0; }