C/C++ 함수

함수를 비유한 그림

함수 구조

  • 입력
    매개변수(parameter), 인자
  • 출력
    반환값(return value), 리턴값
    함수가 돌려주는 결과 값
  • void
    리턴값이 없으면 리턴형 쓰는 자리에 void
    매개변수가 없으면 매개변수 쓰는 자리에 void

사용 방법

  • 함수 정의
    함수 만들기
    이름, 매개변수, 리턴형, 기능
  • 함수 호출
    함수 사용하기
    이름, 매개변수
  • 함수 선언
    함수의 사용법
    이름, 매개변수, 리턴형
    컴파일러에게 함수에 대한 정보를 미리 줌
#include <iostream>
void display(void); // 선언, 프로토타입, 원형
int main() {
    display();
    std::cout << "Hello World";
    return 0;
}
void display() {
    std::cout << "Hello World";
}
display 함수를 선언하고 main()아레에 정의한 모습
#include <iostream>
void doubleNum(int x);
void display(void); // 선언, 프로토타입, 원형
int doubleNumReturn(int x);
int main() {
    display();
    doubleNum(10);
    std::cout << "Hello World\n";
    std::cout << doubleNumReturn(20);
    return 0;
}
void doubleNum(int x)
{
    std::cout << x*2;
}
int doubleNumReturn(int x)
{
    return x * 2;
}
void display() {
    std::cout << "Hello World\n";
}
여러 실험이 끝난 예제

return문

  • 결과 값을 호출한 함수로 반환
  • return문을 만나면 함수의 나머지 부분에 상관없이 함수의 실행을 종료하고 호출한 함수로 넘어감
  • return(수식이나 값);
  • return 다음에 괄호는 생략해도 됨
  • return 1;
  • return x;
  • return (x*2);
  • return (x+y);

함수의 정의와 선언(원형, prototype)

  • 덧셈기 함수의 정의(구현)
    int add(int x, int y) // 함수의 머리
    { // 함수의 본체 시작
    return (x+y); // 함수의 본체
    } // 함수의 본체 끝
  • add()함수의 정의에서 첫 번째 줄인 "int add(int x, int y)" 를 함수의 머리라고 하고 아래 부분은 함수의 본체(body) 라고 함
  • 함수의 머리 부분을 다음과 같이 하나의 문장 (세미콜론으로 끝남)으로 만드는것을 함수 선언 또는 함수 원형(prototype)이라 함
    int add(int x, int y);
    int add(int, int);
    매개변수 x와 y는 생략할 수 있지만 생략하지 않는 것이 더 좋음
#include <iostream>
void doubleNum(int x);
void display(void); // 선언, 프로토타입, 원형
int doubleNumReturn(int x);
int add(int x, int y);
char vending(int x);
const char* vending1(int x);
std::string vending2(int x);
int main() {
    display();
    doubleNum(10);
    std::cout << "Hello World\n";
    std::cout << doubleNumReturn(20);
    std::cout << add(2 ,3);
    std::cout << vending(1);
    std::cout << vending1(1);
    std::cout << vending2(1);
    return 0;
}
std::string vending2(int x)
{
    if (x==1) return "aaa";
    else return "bbb";
}
const char* vending1(int x)
{
    if (x==1) return "커피";
    else return "유자차";
}
char vending(int x)
{
    if (x==1) return 'A';
    else return 'B';
}

int add(int x, int y){
    return x + y;
}
void doubleNum(int x)
{
    std::cout << x*2;
}
int doubleNumReturn(int x)
{
    return x * 2;
}
void display() {
    std::cout << "Hello World\n";
}
자판기를 여러가지 코드로 생성한 예제

출처 : Smile Han의 C언어 강의 - Youtube
추천 사이트 : 파이썬튜터 - 코드 시각화를 통해 이해를 도움