본문 바로가기
프로그래밍/C

함수

by leestun 2020. 7. 22.
반응형

[함수]

정의: 여러개의 작업(명령)들의 나열된 묶음이다.

함수의 구조
<함수의 구현부>

자료형 함수명() {
명령1;
명령2;
명령3;
return 리턴값;
}

<함수의 호출부>
함수명();
—————————————————-
<실습>함수.c


#include <stdio.h> 

open() { 
printf("문을 열어\n"); 
printf("바닥 청소해\n"); 
printf("포스기 켜\n"); 
printf("빵을 진열해\n"); 
}

int main() {
open(); 
return 0; 

}


*함수안에는 함수를 쓸 수 없다.
————————————————————

[매개변수와 리턴값]


<return, 리턴값>
return,리턴값; 의 기능: 함수의 결과값을 반환한다 -> 함수를 실행하고 결과값을 return값으로 돌려줘라

return type: 결과값(리턴값)의 자료형을 함수의 이름앞에 적어준다.

void type:결과값이 없을때 적어준다.

<매개변수>
함수 호출시 전달할 값을 저장할 수 있는 변수를 만들어줘야 한다. 한번에 여러개의 매개변수 입력은 할 수 없다.

ex) int sum(int x,y) -> X
int sum(int x, int y) -> O

호출부 구현부
함수(3) 함수(int 변수)
함수(‘a’) 함수(char 변수)
함수(“hello”) 함수(char[] 변수)
함수(3.14f) 함수(float 변수)
————————————————————-
<실습>함수실습.c

sum(x,y) = x+y
sub(x,y) = x-y
mul(x,y) = x*y
div(x,y) = x/y
max(x,y)= 더 큰수
min(x,y)= 더 작은수

-main
두 숫자를 사용자에게 입력받아 입력받은 숫자의 덧셈,뺄셈, 곱셈, 나눗셈 결과를 각각 출력하는 코드 구현

  #include <stdio.h>
  
  int sum(int x, int y) { 
  return x + y; 
  } 
  int sub(int x, int y) {
  return x - y; 
  } int mul(int x, int y) {
  return x * y;
  } int div(int x, int y) {
  return x / y;
  } int max(int x, int y) { 
  if (x - y < 0) {
  return y;
  } 
  else { 
  return x;
  	}
  }
  int min(int x, int y) {
  if (x - y < 0) {
  	return x;
  }
  else {
  	return y;
  	}
  } 
  
  int main() {
  
  int x; 
  int y; 
  printf("숫자1을 입력하세요: "); 
  scanf("%d", &x); 
  printf("숫자2를 입력하세요: "); 
  scanf("%d", &y); 
  printf("sum(x, y)=%d\n", sum(x, y)); 
  printf("sub(x, y)=%d\n", sub(x, y)); 
  printf("mul(x, y)=%d\n", mul(x, y)); 
  printf("div(x, y)=%d\n", div(x, y)); 
  printf("max(x, y)=%d\n", max(x, y)); 
  printf("min(x, y)=%d\n", min(x, y)); 
  return 0; 
  }
  


----------------------------------------------
함수는 호출하기 전에 어떤 명령들로 구현이 되어있는지 미리 알려줘야 한다.

함수구현부
main() {
함수호출;
}

-> 함수가 너무 많아지면, main을 찾기가 힘들다
함수를 밑에다 구현하고 싶다.
main() {
함수호출;
}
함수구현부


#include 
//함수의 원형, 프로토타입
int sum(int, int);
int sub(int, int);
int mul(int, int);
int div(int, int);
int max(int, int);
int min(int, int);

int main() {
int x;
int y;

printf("숫자1을 입력하세요: ");
scanf("%d", &x);
printf("숫자2를 입력하세요: ");
scanf("%d", &y);


printf("sum(x, y)=%d\n", sum(x, y));
printf("sub(x, y)=%d\n", sub(x, y));
printf("mul(x, y)=%d\n", mul(x, y));
printf("div(x, y)=%d\n", div(x, y));
printf("max(x, y)=%d\n", max(x, y));
printf("min(x, y)=%d\n", min(x, y));

return 0;
}

int sum(int x, int y) {

return x + y;
}
int sub(int x, int y) {

return x - y;
}
int mul(int x, int y) {

return x * y;
}
int div(int x, int y) {

return x / y;
}
int max(int x, int y) {
if (x - y < 0) {
return y;
}
else {
return x;
}
}
int min(int x, int y) {
if (x - y < 0) {
return x;
}
else {
return y;
	}
}

해결방법: 함수의 프로토타입(원형)을 적어준다.

<구조>
함수의 프로토타입
main(){함수의 호출();}
함수의 구현부

<함수의 프로토타입 작성방법>
자료형 함수명(타입,타입);

————————————————————
헤더파일 만들기
- 우리가 작성한 함수의 구현부를 모아놓은 헤더파일 만들기
- 사용자 라이브러리(헤더파일)은 “”을 사용해서 include가능

 #include "calc.h"
  int main() { 
  echo("hello\n");
  int x,y; 
  printf("숫자1을 입력하세요: ");
  scanf("%d", &x);
  printf("숫자2를 입력하세요: ");
  scanf("%d", &y);
  printf("sum(x, y)=%d\n", sum(x, y));
  printf("sub(x, y)=%d\n", sub(x, y));
  printf("mul(x, y)=%d\n", mul(x, y));
  printf("div(x, y)=%d\n", div(x, y));
  printf("max(x, y)=%d\n", max(x, y));
  printf("min(x, y)=%d\n", min(x, y));
  return 0;
  }
  

-----------------------------------------------------
#include 
int sum(int x, int y) {

return x + y;
}
int sub(int x, int y) {

return x - y;
}
int mul(int x, int y) {

return x * y;
}
int div(int x, int y) {

return x / y;
}
int max(int x, int y) {
if (x - y < 0) {
return y;
}
else {
return x;
}
}
int min(int x, int y) {
if (x - y < 0) {
return x;
}
else {
return y;
}
}
void echo(char str[]) {
printf("%s", str);
}
반응형

'프로그래밍 > C' 카테고리의 다른 글

변수의종류  (0) 2020.07.24
재귀함수  (0) 2020.07.24
반복문(2)  (0) 2020.07.21
제어문-반복문  (0) 2020.07.21
제어문- 조건문  (0) 2020.07.18