05. 함수

PearLine_Zero·2023년 12월 2일

C

목록 보기
5/10
post-thumbnail

5.1 함수란

  • 첫 번째 그림을 보면 상자에 x라는 값을 넣으면 뭔가 작동하고 y라는 값이 나옴.
  • 예를 들어 36을 상자 안에 들어감. 그리고 상자 안에는 ☐ + 4라고 적혀 있음.
  • 결과로는 입력한 36에 4를 더해 40이 나옴.
  • 그림처럼 값을 입력받아 어떤 작업을 한 후 그 결과를 출력하는 것이 바로 함수.

✅ 함수

반환형 함수명(전달값); // 함수 선언
int main(void) {
	함수명(전달값);
}
반환형 함수명(전달값) { // 함수 정의
	// 수행할 문장
}
  • 함수 선언을 하고 나면 함수가 어떤 일을 할지 정의하는데 이를 함수 정의라함.
  • 함수 정의는 main() 함수 아래쪽에 작성.
  • 함수 선언과 비슷하게 작성하면 되는데, 세미콜론은 빼고 main()을 작성할 때처럼 중괄호({})을 붙임.
  • 중괄호 안에는 함수에서 수행할 문장을 넣음.
  • 함수를 선언하고 정의했으면 main() 함수에 중복되는 부분을, 함수로 사용하도록 바꾸는데 함수를 사용한다는 것은 '함수에 어떤 값을 전달해 어떤 작업을 하라'고 명령하는 건데, 이를 함수호출이라고 함.
  • 함수를 호출할 때는 함수명을 적고 소괄호 안에 전달한 값을 넣으면 됨.
  • 함수 호출시 뒤에 세미콜론을 붙임.

✅ 사용자 정의 함수

  • 표준 함수
    • 이미 C언어에 이미 만들어져 있어서 프로그램을 작성할 때 형식에 맞춰 가져다 쓰기만 하면 됨.
    • printf(), scanf(), rand() 함수 등이 대표적인 표준함수.
    • 표준함수는 표준 라이브러리 함수, 내장 함수, 시스템 제공 함수라고도 함.
  • 사용자 정의 함수
    • 사용자가 직접 만들어(정의해) 사용하는 함수.
    • 어떤 작업을 반복해서 사용해야 할 때 직접 만들어서 사용하는 함수.
  • 함수를 실행한 결과로 반환하는 값을 반환값이라고 하고, 반환값의 자료형을 반환형이라고 함.
  • 함수를 호출할 때 값을 전달하면 함수에서는 전달값을 변수로 받는데, 이 변수를 매개변수(parameter)라함.
  • 전달값이 여러개인 경우 쉼표(,)로 구분하거나, 매개변수도 전달값의 개수에 맞춰 선언.
  • 전달값과 매개변수는 자료형이 같아야 함.
// 함수선언
반환형 함수명(매개변수1, 매개변수2...);
void main(void) {
	함수명(전달값1, 전달값2....); //함수호출
 }
 //함수정의
 반환형 함수명(매개변수1,매개변수2...){(중략)}
  • 함수를 사용하는 이유
    • 코드의 중복을 방지하고 효율적으로 프로그래밍이 가능.
    • 다른 프로젝트에 재사용할 수 있음.

5.2 함수의 종류

✅ 반환값이 없는 함수

#include<stdio.h>
void function_without_return(); // 함수 선언
int main(void) {
	function_without_retrun(); // 반환값이 없는 함수 호출
   return 0;
}
void function_without_return() { // 함수 정의
  		printf("반환값이 없는 함수입니다\n");
  }
  • 반환값이 없는 함수는 반환형을 void로 선언.
  • 이처럼 반환값이 없는, void로 선언한 함수도 main() 함수에서 호출이 가능.

✅ 반환값이 있는 함수.

 #include<stdio.h>
 int function_without_return(); 
 void p(int num); // 함수 선언
 int main(void) {
 	ret = function_without_return(); // 반환값이 있는 함수 저장
    return 0;
}
void function_without_return() { // 함수 정의
   		printf("반환값이 있는 함수입니다\n");
        return 10;
   }     
  • 반환값이 있는 함수는 어떤 작업을 처리한 후 그 결과를 반환.
  • 결과는 return문으로 반환하고, 반환값은 함수를 호출한 곳에서 사용이 가능.

✅ 전달값이 없는 함수.

#include<stdio.h>
void function_without_params(); // 함수 선언
int main(void) {
	function_without_params(); // 전달값이 없는 함수 호출
   return 0;
}
void function_without_params() { // 함수 정의
  		printf("전달값이 없는 함수입니다\n");
  }
  • 전달값이 없는 함수를 호출할 때는 아무런 값도 전달하지 않음.

✅ 전달값이 있는 함수.

 #include<stdio.h>
 void function_without_params(int num1, int num2, int num3); // 함수 선언
 int main(void) {
 	function_without_params(1,2,3); // 전달값이 있는 함수 호출
    return 0;
}
void function_without_params(int num1, int num2, int num3) { // 함수 정의
   		printf("전달값이 있는 함수이고, 전달값은 %d, %d, %d입니다.\n",num1, num2, num3);
   }
  • 전달값이 있는 함수를 호출할 때는 1개 이상의 값을 전달하고, 함수에서는 이를 매개변수로 받음.
    • 매개변수와 인수
      • 매개변수(parameter)는 함수를 호출할 때 전달되는 값이 저장되는 변수이고, 인수(argument)는 함수를 호출할 때 전달하는 값이나 변수.
      • a , b 는 매개변수이고, 1, 2 는 인수.
        void function(int a, int b); // 함수 선언
        ....
        fuction(1, 2) // 함수 호출

### ✅ 반환값과 전달값이 있는 함수.
- 2가지를 합쳐서 전달값도 있고 반환값도 있는 함수.
- 반환값과 전달값은 둘 다 없을 수도, 둘 다 있을 수도 있음.

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글