Microsoft PowerPoint - 05장(함수) [호환 모드]

Similar documents
Microsoft PowerPoint - additional01.ppt [호환 모드]

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

슬라이드 1

Microsoft PowerPoint - [2009] 02.pptx

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - Chapter 1-rev

금오공대 컴퓨터공학전공 강의자료

PowerPoint Template

PowerPoint Template

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - Chapter 6.ppt

C프로-3장c03逞풚

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

슬라이드 1

C++ Programming

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - additional06.ppt [호환 모드]

C++ Programming

Microsoft PowerPoint - Chapter8.pptx

설계란 무엇인가?

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

쉽게 풀어쓴 C 프로그래밍

C 프로그래밊 개요

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

C 언어 프로그래밊 과제 풀이

설계란 무엇인가?

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

OCW_C언어 기초

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

설계란 무엇인가?

PowerPoint Presentation

Microsoft PowerPoint - chap12-고급기능.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

쉽게 풀어쓴 C 프로그래밍

11장 포인터

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

080629_CFP °ø°³¿ë.hwp

윤성우의 열혈 TCP/IP 소켓 프로그래밍

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint Presentation

PowerPoint Presentation

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

untitled

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap-03.pptx

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

ch15

C 프로그램의 기본

쉽게 풀어쓴 C 프로그래밍

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

중간고사

PowerPoint 프레젠테이션

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

C 프로그래밊 개요

Microsoft PowerPoint - Java7.pptx

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap05-제어문.pptx

설계란 무엇인가?

슬라이드 1

윤성우의 열혈 TCP/IP 소켓 프로그래밍

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Microsoft PowerPoint - chap11-포인터의활용.pptx

쉽게

슬라이드 1

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - ch07 - 포인터 pm0415

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

슬라이드 1

Microsoft PowerPoint - additional08.ppt [호환 모드]

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Microsoft PowerPoint - chap-09.pptx

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

C++ Programming

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

OCW_C언어 기초

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint 프레젠테이션

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Transcription:

이장에서다룰내용 1 함수의기본 2 함수의입출력방법 함수 함수는입력을넣으면출력이나오는마술상자다. 3 4 재귀함수 Inline 함수 01_ 함수의기본 01_ 함수의기본 함수란 함수를사용할때의장점 반복적으로실행해야할내용을함수로만들어필요할때마다호출해사용할수있다. 프로그램이모듈화 ( 블록화 ) 되므로읽기쉽고, 디버그와편집이쉽다. 프로그램의기능과구조을한눈에알아보기쉽다. 다른프로그램에서재사용할수있다. 수학시간에배운 y=f(x) 와같이, 함수에게입력값을주면일련의과정을거쳐출력값이나오게된다. 반복된동작에대한코드들을보기좋게하고, 크기를줄이기위해함수를사용한다. 사용자정의함수의세가지요소 1 함수의정의 2 함수의호출 3 함수의선언

01_ 함수의기본 사용자정의함수의세가지요소 01_ 함수의기본 함수의기본형태 1 함수의정의 2함수의호출 3함수의선언 함수의정의 함수 _ 자료형함수 _ 이름 ( 매개변수리스트 ) { 변수선언 ; 문장 ; return ( 결과값 ); } 위와같이함수를선언하고동작을구현하게되면, 선언된이후에는함수명을이용하여여러번쉽게반복하여수행시킬수있다. 다음의기본예제 [5-1] 을함수를사용하여기본예제 [5-2] 로바꾸는과정을살펴보자. 기본예제에서는한줄짜리코드를함수로바꿨지만, 보다긴코드를함수로바꾼경우에는더욱코드가상대적으로간결해질것이다. [ 기본예제 5-1] 함수를적용하지않은코드 [ 기본예제 5-2] 함수를적용한코드 03 int main(int argc, char* argv[]) 05 int i; 06 for(i=0;i<2;i++) 07 { 08 cout << "print debug message\n"; 09 } 10 11 cout << "print debug message\n"; 12 13 return 0; 14 } 03 printdebugmsg() 05 cout << "print debug message\n"; 06 } 07 08 int main(int argc, char* argv[]) 10 int i; 11 for(i=0;i<2;i++) 12 { 13 printdebugmsg(); 14 } 15 16 printdebugmsg(); 17 18 return 0; 19 } printdebugmsg 함수를선언한다. printdebugmsg 함수를호출한다. printdebugmsg 함수를호출한다.

[ 기본예제 5-3] 함수선언을미리하고, 구현은뒤에한예제. 03 printdebugmsg(); printdebugmsg 함수를선언한다. 04 05 int main(int argc, char* argv[]) 06 { 07 int i; 08 for(i=0;i<2;i++) 10 printdebugmsg(); printdebugmsg 함수를호출한다. 11 } 12 13 printdebugmsg(); 14 15 return 0; 16 } 17 18 printdebugmsg() 19 { printdebugmsg 함수를구현한다. 20 cout << "print debug message\n"; 21 } 01_ 함수의기본 함수의유형 1 매개변수가없고반환값도없는함수 2 매개변수가있고반환값은없는함수 3 매개변수도있고반환값도있는함수 매개변수와반환값이모두없는함수 매개변수도반환값도없는함수작성하기 반환값의유형 01 #include<iostream> using namespace std; 03 void show( ) // 함수의정의 05 cout << "************************\n"; 06 return; 07 } 08 void main( ) 10 cout << " 함수호출하기전 \n"; 11 show( ); // 함수의호출 12 cout << " 함수호출한후 \n"; 13 } return 식 ;

두수의합을구하는함수작성하기 매개변수가있고반환값이없는함수 01 #include<iostream> using namespace std; 03 void sum(int a, int b) // a, b 는형식매개변수 05 cout << " a + b = "<< a + b<<"\n" ; 06 } 07 void main() 08 { 09 int a=10, b=20; 10 sum(a, b); // 변수 a, b는실매개변수 11 sum(4, 5); // 상수 ( 값 ) 4, 5 역시실매개변수 12 } 매개변수도반환값도있는함수작성하기 01 #include<iostream> using namespace std; 03 int abs(int x) 05 int y; // 절대값을저장할변수 06 if(x < 0) // 절대값을구하는공식 07 y = -x; 08 else 09 y = x; 10 return y; // 구해진결과값을 return 문으로반환한다. 11 } 12 void main( ) 13 { 14 int a, result; 15 cout << "\n 정수값하나를입력하세요. => "; 16 cin >> a; 17 result = abs(a); // 함수의결과값을변수 result에대입한다. 18 cout <<" 구한절대값은 " << result << " 이다. \n" ; 19 } _ 함수의입출력방법 함수에대한입력 아무입력없이동작하는함수보다는입력값에따라동작방식이바뀌거나, 입력값들을이용하여계산을하는함수들이실제로많이이용된다. 함수에입력을주는방법은다음과같다. 함수명다음의괄호안에입력변수형과변수명을사용할만큼나열해서선언하면되며, 함수를호출할때에는선언한순서대로입력변수를정확하게사용해야한다.

_ 함수의입출력방법 함수의선언 자료형함수 _ 이름 ( 매개변수리스트 ); [ 기본예제 5-4] 함수입력예제 #1 03 printdebugmsg(int t i) printdebugmsg 함수에입력인자를 사용하여선언한다. 05 cout << "print debug message : i = " << i << "\n"; 06 } 07 08 int main(int argc, char* argv[]) 10 int i; 11 for(i=0;i<2;i++) For 루프를돌며 i값을입력인자로 12 { 하여 printdebugmsg 함수를호출한다. 13 printdebugmsg(i); 14 } 15 16 printdebugmsg(i); 17 18 return 0; 19 } For 루프가끝난뒤, 증가된 i 값을그대로사용하여다시한번 printdebugmsg를호출한다. [ 응용예제 5-5] 함수입력예제 #2 03 printarea(int x, int y) 05 int area = [ 1 ]; 06 cout << " 넓이 : " << area << "\n"; 07 } 08 09 int main(int argc, char* argv[]) 10 { 11 12 int width,height; 13 14 cout << " 넓이를입력하세요 : "; 15 cin >> width; 16 cout << " 높이를입력하세요 : "; 17 cin >> height; 18 19 printarea([ 2 ]); 20 21 return 0; 22 } printarea 함수를선언한다. 변수 width, height 를선언한다. width, height 에대하여사용자입력을받는다. printatra 함수를호출하여넓이를계산한다. _ 함수의입출력방법 함수에대한출력 ( 반환 ) 함수에게서결과를받아오려면다음과같은방법을사용한다. 출력값을반환하고자할때는함수가끝나기직전에 return 문을이용하여반환할변수를지정해야한다. 반환할변수와선언할때함수명앞에명시한 반환 _ 변수형 은일치해야한다. 반환값이없는경우에는 반환 _ 변수형 으로 void 를명시한다.

[ 기본예제 5-6] 함수출력예제 03 int getarea(int x, int y) 05 int area = x*y; 넓이를반환하는 06 return area; getarea 함수를선언한다. 07 } 08 09 int main(int argc, char* argv[]) 10 { 11 12 int width,height; 13 변수 width, height를선언한다. 14 cout << " 넓이를입력하세요 : "; 15 cin >> width; width, height 에대하여 16 cout << " 높이를입력하세요 : "; 17 cin >> height; 사용자입력을받는다. 18 19 int area = getarea( width, height ); getarea 함수를호출하여넓이를 20 cout << " 넓이 : " << area << "\n"; 계산하고 area에값을반환한다. 21 22 return 0; 23 } _ 함수의입출력방법 Main 함수 Main 함수도입출력인자를가지고있다. 이입력인자들은프로그램을실행시킬때, example.exe a 의 -a 와같이뒤에주어진인자를의미한다. MS Visual C++ 에서는다음과같이 Program arguments 창에 help 와같이입력인자를줄수있다. [ 기본예제 5-7] main 함수예제 03 int main(int argc, char* argv[]) 05 int i; 06 cout << "main 인력인자의갯수 : " << argc << "\n"; 입력인자의개수를출력한다. 07 08 for(i = 0; i < argc; i++) 입력인자들을출력한다. 10 cout << argv[i] << "\n"; 11 } 12 13 return 0; 14 } 03_ 재귀함수 재귀함수란, 자기자신을호출하는함수. 재귀함수사용시주의점 재귀함수는자기자신을호출하게되므로, 자칫잘못하면무한히 반복될수가있다. 그러므로, 정상적인동작을위해서는재귀함수내부에동작이 멈추는시점을정해주여야한다.

[ 기본예제 5-8] 재귀함수예제 #1 : Sum 03 int Sum( int n ) 05 if (n==1) 06 return 1; 재귀함수가멈출조건을정한다. 07 else 08 return n + Sum( n-1 ); 자기자신을호출한다. 09 } 10 11 int main(int argc, char* argv[]) 12 { 13 int result = Sum( 4 ); 14 cout << " 합 : " << result << " n"; 15 16 return 0; 17 } [ 응용예제 5-9] 재귀함수예제 #2 : Factorial 03 int [ 1 ] ( int n ) 05 if (n<=1) Factorial 함수의동작이언제 06 return 1; 멈추는지정의한다. 07 else 08 return n * [ 2 ](n-1 ); 자기자신을재귀적으로어떻게 09 } 10 호출할지를정의한다. 11 int main(int argc, char* argv[]) 12 { 13 int result = Factorial( 4 ); 14 cout << "Factorial 결과값 : " << result << " n"; 15 16 return 0; 17 } 04_inline 함수 inline 함수란 함수가호출되는위치에해당함수코드가삽입되는효과를준다. 함수의사용이좋기만한것은아니다. 함수를사용하면함수를호출하고복귀하는과정에대한 시간이더걸리므로, 너무짧은코드를함수로바꾸어서 자주사용하게되면성능의저하가일어날수있다. C 의경우에는 define 을이용하여자주사용되는짧은 함수들을매크로함수로바꾸는작업이필요하지만, C++ 에서는 inline을이용하면간단하게해결된다. 함수가호출될때내부적으로벌어지는일 1 인수를전달하기위해인수값을순서대로스택에밀어넣는다. 2 호출원은바로다음번지를스택에기록함으로써함수가복귀할번지를저장한다. 3 함수가정의되어있는번지로점프하여제어권을함수에게넘긴다. 4 함수는스택에자신의지역변수를위한공간을만든다. 5 함수의코드를수행한다. 6 리턴값을넘긴다. 7 복귀번지로리턴한다. 8 인수전달에사용한스택을정리한다.

04_inline 함수 [ 응용예제 5-11] inline 을사용하여 1 을더하는프로그램 inline 자료형함수이름 ( 매개변수리스트 ) { 변수선언 ; 문장 ; return ( 결과값 ); } 함수가인라인이될것인가아닌가는프로그래머가지정하지만최종결정은컴파일러가한다. 재귀호출함수는인라인이될수없다. 프로그램의다른곳에서이함수의주소를참조하는경우가있다면이경우도인라인함수가되지못한다. 함수의길이가너무길경우. inline 키워드를명시적으로쓰지않아도자동으로인라인함수가되는경우 클래스선언에코드가작성되어있는멤버함수는자동인라인속성을가진다. 03 inline int inc(int x) 05 return x+1; 06 } 07 08 int main(int argc, char* argv[]) 10 int i; 11 cout << " 숫자를입력하세요 : "; 12 cin >> i; 13 cout << inc(i) << endl; 14 return 0; 15 } inline 함수를정의한다. inline 함수를호출한다. 선행처리자 선행처리자 매크로상수 #define 매크로 _ 상수치환할 _ 문자열 _ 또는 _ 상수

매크로상수를이용한처리 #define PI 3.141592 03 void main( ) 05 int r = 5; 06 double area ; 07 area = r*r*pi; 08 //PI = 2.71; 09 cout << "area = " <<area<< "\n"; 10 } 선행처리자 const 상수 const 자료형변수명 = 초기값 ; 선행처리자 매크로함수 #define 매크로 _ 함수 _ 이름 ( 매개변수리스트 ) 치환될 _ 문자열 _ 상수 제곱승을구하는매크로함수의잘못된예살펴보기 01 #include <iostream> using namespace std; 03 #define SQUARE1(x) x*x 04 void main(void) 05 { 06 int a=5, res; 07 res = SQUARE1(a+2); 08 cout << " SQUARE1(a+2) => " << res << "\n"; //17 09 10 res = 100/SQUARE1(a); 11 cout << " 100/SQUARE1(a) => " << res << "\n"; //100 12 }

제곱승을구하는매크로함수의잘못된예살펴보기 제곱승을구하는매크로함수정의하기 01 #include <iostream> using namespace std; 03 #define SQUARE2(x) ((x)*(x)) 04 void main(void) 05 { 06 int a=5, res; 07 res = SQUARE2(a+2); 08 cout << " SQUARE2(a+2) => " << res << "\n"; 09 10 res = 100/SQUARE2(a); 11 cout << " 100/SQUARE2(a) => " << res << "\n"; 12 } 매크로함수, 인라인함수, 일반함수의차이점살펴보기 01 #include<iostream> using namespace std; 03 #define add1(a, b) a+b 04 inline int add2(int a, int b) 05 { 06 return a+b; 07 } 08 int add3(int a, int b) 10 return a+b; 11 } 12 void main( ) 13 { 14 int result; 15 result = 2*add1(10, 20); 16 cout<<"macro 함수 => "<<result<<"\n"; 17 result = 2*add2(10, 20); 18 cout<<"inline 함수 => "<<result<<"\n"; 19 result = 2*add3(10, 20); 20 cout<<" 일반함수 => "<<result<<"\n"; 21 } 선행처리자 #include #include < 파일명 > #include " 파일명 "

예제모음 _07 의요구사항및실행결과 요구사항 1 자신의이름, 학번을출력하는함수 printmyinfo() 를만든다. 2 함수 printmyinfo() 에는입출력인자가없으며 cout 을이용하여출력한다. 실행결과 예제모음 _07 소스 03 void printmyinfo() 05 cout << " 이름 : 홍길동 n"; 06 cout << " 학번 : 07010130 n"; 07 } 08 09 int main(int argc, char* argv[]) 10 { 11 printmyinfo(); 12 13 return 0; 14 } printmyinfo 함수를구현한다. Main 함수로써, 프로그램의시작점이다. printmyinfo 함수를호출한다. 예제모음 _08 의요구사항및실행결과 예제모음 _08 소스 요구사항 1 삼각형의밑변 (width), 높이 (height) 는 cin 을이용하여입력받는다. 2 삼각형의밑변, 높이를입력인자로주면, 넓이를반환하는함수를만든다. 실행결과 03 int calctriangle(int width, int height) calctriangle l 함수를 구현한다. 05 int result = width*height/2; 06 return result; 결과값을반환한다. 07 } 08 09 int main(int argc, char* argv[]) 프로그램의시작점이다. 10 { 11 int width, height; 12 13 cout << " 밑변의길이를입력하세요 : "; 밑변과높이를 14 cin >> width; 입력받는다. 15 cout << " 높이를입력하세요 : "; 16 cin >> height; 17 18 int area = calctriangle( width, height ); 19 cout << " 삼각의넓이는 : " << area << " n"; 20 21 return 0; 22 } calctriangle 함수를호출한다.

예제모음 _09 의요구사항및실행결과 요구사항 1 사용자로부터 main 함수의입력인자를받는다. 2 main의입력인자가주어진경우에는삼각형의넓이를출력하며, main의입력인자가주어지지않은경우에는사각형의넓이를출력한다. 3 도형의밑변의길이와높이에대한입력은 cin 을이용하여받는다. 4 삼각형의넓이와사각형의넓이를구하는함수는 main 함수와분리하여구현하도록한다. 실행결과 main 에게입력인자를주지않은경우 예제모음 _09 소스 03 int calctriangle(int width, int height) calctriangle 함수를 05 return width*height/2; 구현한다. 06 } 07 08 int calcrectangle(int width, int height) 10 return width*height; height; calcrectangle 함수를구현한다. 11 } 12 13 int main(int argc, char* argv[]) 프로그램의시작점이다. 14 { 15 int width, height; 16 17 cout << " 밑변의길이를입력하세요 : "; 18 cin >> width; 19 cout << " 높이를입력하세요 : "; 20 cin >> height; 21 22 if ( argc==1 ) { 23 cout << " 삼각형의넓이는 : " << calctriangle(width, height) << " n"; 24 } 25 else { 26 cout << " 사각형의넓이는 : " << calcrectangle(width, height) << " n"; 27 } 28 29 return 0; 30 } 밑변과높이를입력받는다. 입력인자가없는경우 calctriangle 함수를호출한다. 입력인자가있는경우 calcrectangle 함수를호출한다. main 에게입력인자를 rect 로준경우 요약 함수의목적 반복되는코드에대한효율적인관리, 쉬운이해, 코드크기를줄이기위한목적으로사용된다. 기본형태 입출력형태 www.themegallery.com IT CookBook for Beginner, C++ 기초 5 장끝 재귀함수 자기자신을호출하는함수를의미. 무한반복에빠지지않도록조심해야한다.