10 include stdio h int mainvoid int num

  • Slides: 70
Download presentation
10장. 함수의 활용 #include <stdio. h> int main(void) { int num; printf(“Please enter an

10장. 함수의 활용 #include <stdio. h> int main(void) { int num; printf(“Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("Is negative. n"); printf("num = %dn", num); return 0; } 1

함수의 인자 전달 방법 § 값에 의한 전달 Swap 함수 - 값에 의한 전달

함수의 인자 전달 방법 § 값에 의한 전달 Swap 함수 - 값에 의한 전달 방법(1/2) 01: /* Ex 10_01. c */ 02: #include <stdio. h> 03: 04: void Swap(int x, int y); Swap 함수의 선언 05: 06: int main(void) 07: { 08: int a = 10; 09: int b = 20; 10: 11: printf("Swap 전의 a = %d, b = %dn", a, b); 12: 13: Swap(a, b); Swap 함수의 호출 14: 15: printf("Swap 후의 a = %d, b = %dn", a, b); 16: 17: return 0; 18: } 19: 10장. 함수의 활용 3

함수의 인자 전달 방법 § 포인터에 의한 전달 Swap 함수 - 포인터에 의한 전달

함수의 인자 전달 방법 § 포인터에 의한 전달 Swap 함수 - 포인터에 의한 전달 방법(1/2) 01: /* Ex 10_01. c */ 02: #include <stdio. h> 03: 04: void Swap(int *x, int *y); Swap 함수의 선언 05: 06: int main(void) 07: { 08: int a = 10; 09: int b = 20; 10: 11: printf("Swap 전의 a = %d, b = %dn", a, b); 12: 13: Swap(&a, &b); Swap 함수의 호출 14: 15: printf("Swap 후의 a = %d, b = %dn", a, b); 16: 17: return 0; 18: } 19: 10장. 함수의 활용 5

함수의 인자 전달 방법 § 포인터에 의한 전달 출력 인자의 사용 예(1/2) 01: /*

함수의 인자 전달 방법 § 포인터에 의한 전달 출력 인자의 사용 예(1/2) 01: /* Ex 10_03. c */ 02: #include <stdio. h> 03: Get. Sum. Product 함수의 04: void Get. Sum. Product(int x, int y, int *sum, int *product); 선언 05: 06: int main(void) 07: { 08: int a = 5, b = 8; 09: int res 1, res 2; 10: Get. Sum. Product 함수의 호출 11: Get. Sum. Product(a, b, &res 1, &res 2); 12: 13: printf("%d + %d = %dn", a, b, res 1); 14: printf("%d + %d = %dn", a, b, res 2); 15: 16: return 0; 17: } 18: 10장. 함수의 활용 10

함수의 인자 전달 방법 §배열의 전달 함수의 인자로 배열을 전달하는 경우의 예(1/3) 01: /*

함수의 인자 전달 방법 §배열의 전달 함수의 인자로 배열을 전달하는 경우의 예(1/3) 01: /* Ex 10_04. c */ 02: #include <stdio. h> 03: 04: void Print. Array(int *arr, int size); 05: int Get. Sum. Of. Array(int *arr, int size); 06: 07: int main(void) 08: { 09: int x[5] = {10, 20, 30, 40, 50}; 10: int y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 11: 12: printf("x 배열 : "); 13: Print. Array(x, 5); 14: printf("합계 : %dnn", Get. Sum. Of. Array(x, 5)); 15: 10장. 함수의 활용 배열을 인자로 갖는 함수의 선언 함수의 인자로 배열 전달 18

함수의 인자 전달 방법 §배열의 전달 함수의 인자로 배열을 전달하는 경우의 예(2/3) 16: printf("y

함수의 인자 전달 방법 §배열의 전달 함수의 인자로 배열을 전달하는 경우의 예(2/3) 16: printf("y 배열 : "); 17: Print. Array(y, 10); 18: printf("합계 : %dnn", Get. Sum. Of. Array(y, 10)); 19: 20: printf("y 배열의 일부분 : "); 21: Print. Array(y+2, 5); 22: printf("합계 : %dnn", Get. Sum. Of. Array(y+2, 5)); 23: 24: return 0; 25: } 26: 27: void Print. Array(int *arr, int size) 28: { 29: int i; 30: 31: for(i = 0 ; i < size ; i++) 인자로 전달받은 32: printf("%d ", arr[i]); 배열의 사용 33: printf("n"); 34: } 10장. 함수의 활용 함수의 인자로 배열 전달 19

함수의 인자 전달 방법 §배열의 전달 배열을 입력 인자나 입출력 인자로 전달하는 경우(1/3) 01:

함수의 인자 전달 방법 §배열의 전달 배열을 입력 인자나 입출력 인자로 전달하는 경우(1/3) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex 10_05. c */ #include <stdio. h> void Print. Array(const int *arr, int size); void Sort. Array(int *arr, int size); 배열을 입력 인자로 갖는 함수의 선언 배열을 입출력 인자로 갖는 함수의 선언 int main(void) { int x[5] = {43, 6, 24, 88, 34}; int y[10] = {12, 35, 7, 45, 78, 22, 98, 77, 1, 28}; printf("x 배열 : "); Print. Array(x, 5); Sort. Array(x, 5); printf("정렬후 : "); Print. Array(x, 5); 10장. 함수의 활용 24

함수의 인자 전달 방법 §구조체의 전달 함수의 인자로 구조체를 전달하는 경우(1/2) 01: 02: 03:

함수의 인자 전달 방법 §구조체의 전달 함수의 인자로 구조체를 전달하는 경우(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: /* Ex 10_06. c */ #include <stdio. h> typedef struct point { int x; int y; } POINT; void Print. Point(POINT *p); int main(void) { POINT pt 1 = {100, 200}; Print. Point(&pt 1); } POINT 구조체의 정의 구조체를 인자로 갖는 함수의 선언 구조체를 포인터로 전달 return 0; 10장. 함수의 활용 33

함수의 인자 전달 방법 §구조체의 전달 구조체를 입력 인자, 입출력 인자로 전달하는 경우(1/2) 01:

함수의 인자 전달 방법 §구조체의 전달 구조체를 입력 인자, 입출력 인자로 전달하는 경우(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: /* Ex 10_07. c */ #include <stdio. h> typedef struct point { int x; int y; } POINT; void Print. Point(const POINT *p); void Move. Point(POINT *p, int dx, int dy); 구조체를 입력 인자로 갖는 함수의 선언 구조체를 입출력 인자로 갖는 함수의 선언 int main(void) { POINT pt 1 = {100, 200}; POINT pt 2 = {300, 400}; printf("pt 1 = "); Print. Point(&pt 1); printf("pt 2 = "); Print. Point(&pt 2); 10장. 함수의 활용 38

기억 부류 §static 변수 정적 지역 변수의 사용 예(1/2) 01: 02: 03: 04: 05:

기억 부류 §static 변수 정적 지역 변수의 사용 예(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: /* Ex 10_09. c */ #include <stdio. h> void Test. Static(void); int main(void) { int i; for(i = 0 ; i < 5 ; i++) Test. Static( ); } Test. Static 함수를 다섯 번 호출 return 0; 10장. 함수의 활용 55

기억 부류 §static 변수 정적 지역 변수의 사용 예(2/2) 16: void Test. Static(void) 17:

기억 부류 §static 변수 정적 지역 변수의 사용 예(2/2) 16: void Test. Static(void) 17: { 18: int num = 0; 지역 변수의 선언 19: static int count = 0; 정적 지역 변수의 선언 20: 21: printf("num = %d, ", ++num); 22: printf("count = %dn" , ++count); 23: } 10장. 함수의 활용 56

기억 부류 §static 변수 Static 예제 #include <stdio. h> void sub(void); int main(void) {

기억 부류 §static 변수 Static 예제 #include <stdio. h> void sub(void); int main(void) { int i; for(i = 0; i < 3; i++) sub(); return 0; 자동 지역 변수 } void sub(void) { int auto_count = 0; static int static_count = 0; auto_count=1 static_count=1 auto_count=1 static_count=2 auto_count=1 static_count=3 정적 지역 변수로서 static을 붙이면 지역 변수가 정적 변수로 된다. auto_count++; static_count++; printf("auto_count=%dn", auto_count); printf("static_count=%dn", static_count); } 58

기억 부류 §static 변수 지역 변수의 주소를 리턴하는 경우(1/3) 01: 02: 03: 04: 05:

기억 부류 §static 변수 지역 변수의 주소를 리턴하는 경우(1/3) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex 10_10. c */ #include <stdio. h> #include <string. h> char* Reverse(const char *str); char*형을 리턴하는 함수의 선언 int main(void) { char s 1[ ] = "abc"; char *res = NULL; res = Reverse(s 1); printf("res = %sn", res); } char*형을 리턴하는 함수의 호출 return 0; 10장. 함수의 활용 61

기억 부류 §static 변수 정적 지역 변수의 주소를 리턴하는 경우(1/3) 01: 02: 03: 04:

기억 부류 §static 변수 정적 지역 변수의 주소를 리턴하는 경우(1/3) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex 10_11. c */ #include <stdio. h> #include <string. h> char* Reverse(const char *str); char*형을 리턴하는 함수의 선언 int main(void) { char s 1[ ] = "abc"; char *res = NULL; res = Reverse(s 1); printf("res = %sn", res); } char*형을 리턴하는 함수의 호출 return 0; 10장. 함수의 활용 64