-
(C언어) 7. 함수C언어 문서화 2016. 3. 25. 01:54반응형
<함수>
1. 함수란?
지금까지 배웠던 것 중에 가장 중요하다고 생각한것은 :
(1) : 반복문
(2) : 배열
이 두가지다. 하지만 오늘 알았다. 함수는 이 두개보다 더 중요하다는 것을.
함수란 특별한 기능을 처리하도록 만들어진 프로그램의 단위를 말한다.
함수==역할 이라고 보면 될 것 같다.
2. 함수의 구조
함수는 세 개의 구조로 나뉘어져있다.
<1> 함수 호출
<2> 함수 실행
<3> 함수 결과 리턴
<1>에서는 말 그대로 함수를 호출한다. 준비상태!
<2>에서는 함수를 실행한다. 실행중!
<3>에서는 함수 실행을 마친 뒤 그 결과값을 되돌려준다. 리턴!
3. 지금까지 아무것도 모르고 썼던 함수
C언어에서 printf를 해 본 사람들이라면, 그 사람들은 모두 함수를 쓰고 있다.
이게 무슨말인가...!
그렇다. printf는 함수이다. 이걸 왜 함수라고 하는 것일까? printf()로 함수를 호출한다고 하자. printf()에서 ""(큰 따옴표)안에 있는 것들을 리턴한다고 하자. 그럼 실행은 어디서 하는 걸까?
바로 #include <stdio.h>이다. 여기 안에 printf()를 비롯한 scanf()등이 정의되어있다. 이런 것들을 바로 "라이브러리 함수" 라고 한다.
4. 사용자가 직접 정의하는 함수
아까 함수==역할이라고 했다. 하지만 이미 정해진 역할만 계속 실행하면 너무 제한적이다. 그래서 사용자가 직접 정의하는 함수가 있는 것이다.
코드 하나를 보면서 이야기하자 :
정의하는 방법은 두가지이다.
사실 같은거다.첫번째는 [함수 원형의 선언 -> 함수 호출 -> 함수 정의] 하는 방법이다.
12345678910111213#include <stdio.h>int plus(int a, int b);int main(){int first, second;first = 3;second = 5;printf("%d\n", plus(first, second));}int plus(int a, int b){return a + b;}cs <1: 함수 원형(prototype)의 선언 : [데이터 형] [함수 이름](전달받을 인자들);
3번 줄을 보면 이게 무슨 말인지 감은 잡힐 것이다. 자세히 보면 이 3번 줄은 11번 줄과 매우 흡사하다(거의 똑같다).
<2: 함수 호출 : [함수 이름](전달할 인자들);
[전달할 인자들]은 [전달받을 인자들]과 같다.
<3: 함수 정의
11~13번째 줄은 함수를 정의한 것이다. 여기서는 전달받을 인자가 두개(①a, ②b) 있다.
함수 실행이 끝나면 return 옆에 있는 값을 반환시켜주는데, 여기서는 first와 second 두개의 인자가 전달되어, 그 둘을 더한 값이 반환된다.
쉽게 말하면, plus(first, second) 요게 함수 한번 실행시키고 왔더니 8로 바뀌었다는 것이다. (사실 plus(first, second)=8이 된것이다.
똑같은말인가)두 번째는 [함수 원형 선언과 동시에 정의 -> 함수 호출] 하는 방법이다.
1234567891011#include <stdio.h>int plus(int a, int b){return a+b;}int main() {int first, second;first = 3;second = 5;printf("%d\n", plus(first, second));}cs 이거는 위의 <1과 <3을 합친 것이라고 보면 된다. 이게 더 쉽고 간단해 보인다.
5. 다시 말하지만 함수는 역할입니다.
12345678910111213141516171819#include <stdio.h>int times(int a, int b){return a*b;}int main(){int num_1, num_2, num_3, num_4;printf("값을 두개 입력하세요 : ");scanf("%d %d", &num_1, &num_2);printf("%d\n", times(num_1, num_2));printf("값을 두개 입력하세요 : ");scanf("%d %d", &num_3, &num_4);printf("%d\n", times(num_3, num_4));}cs times라는 함수를 선언했다. 그 함수의 역할은 "전달 받은 인자 두개를 곱하는 것. 그리고 그 결과를 리턴하는 것"이다.
즉, 어떤 정수 두개를 times에 집어넣으면 곱해져서 나오는 것이다.
반응형'C언어 문서화' 카테고리의 다른 글
(C언어) 9. 다차원 배열 (0) 2016.03.27 (C언어) 8. 정렬 방식 (0) 2016.03.25 (C언어) 6. 이진탐색 (0) 2016.03.25 (C언어) 5. 문자열 (0) 2016.03.22 (C언어) 4. 아스키코드 (0) 2016.03.22