티스토리 뷰

BackEnd/C

[5일차] 2. 함수

JINSUKUKU 2021. 2. 14. 01:42

2021.02.10.수

함수 정의
반환값자료형 함수명(매개변수) { 
  명령문; 
  return 값;
}

✔  어떠한 기능을 수행하기 위한 특정 용도의 코드를 한 곳에 모아놓은 것으로 main함수 바깥에 정의한다.

✔  반환값자료형 : 최종적으로 함수가 return할 값의 자료형을 넣어준다.

✔  함수명 : 함수의 기능에 기반하여 함수명을 정한다.

✔  매개변수 : 함수가 실행되기 위해 필요한 값과 자료형을 미리 선언하고, 필요한 값을 받아올 수 있다.

✔  명령문 : 함수의 기능을 수행하기 위한 코드

✔  return 값 : 최종적으로 함수가 return하는 값

 

int sum(int a, int b){
  int result=a+b;
  return result;
}

✔  정수 a와 b의 합을 구하는 함수는 위와 같다.

✔  반환값자료형 : 정수의 합을 구하는 함수이므로, 결과적으로 반환해야하는 값도 정수형이다(int)

✔  함수명 : 합을 구하기위한 함수이므로, sum으로 명명.

✔  매개변수 : 합을 구하기 위해서는 정수 a와 정수 b가 필요하다.

✔  명령문 : 합을 구하기위한 함수이므로, a와 b의 합을 구해 정수형 변수 result에 저장한다.

✔  return 값 : 최종적으로 변수 result에 저장된 a와 b의 합을 반환한다.

 

 

함수 호출
#include <stdio.h>

int sum(int a, int b){
  int result=a+b;
  return result;
}

int main(void){
  int a=1, b=2;
  int result = sum(a,b);
  printf("%d와 %d의 합은 %d입니다",a,b,result);
  return 0;
}

✔  프로그램이 시작되면 main함수가 실행되므로, 정의한 함수를 사용하기 위해서는 main함수에서 함수를 호출해주어야한다.

✔  변수는 선언된 위치에 따라 사용 범위가 정해진다.

✔  즉, 함수 sum에서 선언된 변수와 main함수에서 선언된 변수의 이름이 동일해도 사용 범위가 다르므로 에러가 발생하지 않는다

 

 

함수 선언과 정의의 분리
#include <stdio.h>

int sum(int a, int b);

int main(void){
  int a=1, b=2;
  int result = sum(a,b);
  printf("%d와 %d의 합은 %d입니다",a,b,result);
  return 0;
}

int sum(int a, int b){
  int result=a+b;
  return result;
}

✔  프로그램은 위에서 아래로 차례대로 실행된다.

✔  main함수보다 사용자 함수가 아래에 정의되어 있으면 main함수에서는 사용자함수를 인지하지 못해 에러가 발생한다.

✔  사용자 함수가 늘어날수록 main함수가 아래로 밀리게되면 가독성이 좋지않다.

✔  그러므로 위와 같이 함수의 선언과 정의를 분리한다.

✔  함수를 main함수 위에 선언해 컴파일러에게 미리 함수의 정보를 전달한다.

✔  즉, 함수의 선언이 main함수의 위에서 이루어지면, 정의가 아래에서 이루어지더라도 main함수는 함수를 인지할 수 있다.

 

 

매개 변수가 없는 함수

✔  단순히 입력만 받거나 출력만을 기능하는 함수라면 매개 변수가 필요 없다.

✔  이런 경우 매개변수 자리에 void를 넣어준다. 

 

 

반환값이 없는 함수

✔  반환 값이 없는 경우, 함수를 선언할 때 반환값의 자료형을 설정할 필요가 없으므로 void를 넣어준다.

✔  반환할 값이 없으므로 return문을 값 없이 단독으로 사용하여 함수의 종료를 알린다.

 

 

매개 변수와 반환값이 모두 없는 함수

✔  매개 변수와 반환값이 모두 없는 함수도 존재하며, 이런 경우 매개변수와 반환값의 자료형에 모두 void를 넣어준다.

 

 

 

 

[참고] 한빛미디어-혼자 공부하는 C언어 유튜브 강의 / 엘리스 트랙-혼자 공부하는 C언어 / 길벗-C언어 코딩도장 / 위키백과

'BackEnd > C' 카테고리의 다른 글

[6일차] 1. 재귀 호출 함수  (0) 2021.02.15
[5일차] 숙제 - 코드업 1562.  (0) 2021.02.14
[5일차] 1. 중첩 반복문/break문/continue문  (0) 2021.02.14
[4일차] 2. for문/while문/do-while문  (0) 2021.02.14
[4일차] 1. if문/switch문  (0) 2021.02.13
댓글
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
글 보관함
Total
Today
Yesterday