C언어 : 8. 함수

2026. 5. 25. 23:06·C/Study

안녕하세요.

이번에는 함수를 정리하겠습니다.

 

1. 함수

 1) 의미

  • 함수란 하나의 특정 작업을 수행하기 위한 독립적인 단위라고 할 수 있습니다.
  • 반복적인 작업을 피하기 위한 목적으로 주로 사용됩니다.

 2) 블랙박스(Black-Box)

  • 블랙박스란 내부의 구조에는 관심이 없고, 동작에만 관심을 두는 관점을 말합니다.
  • 함수는 내부의 구성은 작성자만이 알고, 사용자는 함수의 구조을 알 필요가 없습니다.
  • 사용자는 함수를 블랙박스 관점에서 바라보기를 선호합니다.
  • 한 예로 printf() 라는 출력함수를 우리가 사용할 때는 내부구조를 알 필요까지 없습니다.

 3) 기본구조

반환형 함수이름(매개변수)
{
    실행 코드
    return 반환값;
}

int func(int num)
{
    num++; 
    return num;
}

└ 함수는 기본적으로 반환형과 함수이름, 매개변수, 블록({~}) 으로 구성됩니다.


2. 지역변수

 1) 의미

  • 지역변수란 함수 내부에서만 선언되어 사용하는 변수입니다.

 2) 특징

  • 함수 내부인 블록({~}) 에서만 사용되므로, 다른 함수에서는 접근할 수 없고, 블록이 종료되는 경우 지역변수는 소멸됩니다.
  • 매개변수(형식매개변수)는 함수의 가장 유명한 지역변수라고 할 수 있습니다.

 3) 사용구조

int func(int num)
{
    int num2 = 5;
    
    return num % num2;
}

└ 해당 func 라는 함수에서 지역변수는 매개변수인 int num 과 블록 내 선언된 변수인 int num2 라고 할 수 있습니다.

 4) 전역변수

더보기
  • 전역변수란 함수 밖에서 선언된 변수를 의미합니다.
  • 함수가 종료되어도 값이 소멸되지 않습니다.
#include <stdio.h>

int gValue = 100;

int func(int num)
{
    int num2 = 5;
    
    return num % num2;
}

int main()
{
    int Temp;
    Temp = func(gValue);
    printf("%d", Temp);
    
    return 0;
}

└ 여기서 gValue 는 func() 함수 밖에서 선언되었으므로 전역변수입니다.

└ func() 함수에서 gValue 라는 변수가 사용되었지만, func() 함수가 종료되어도 gValue 는 그대로 존재합니다.(프로그램 종료 시에 소멸됩니다.)


3. 매개변수(형식매개변수)

 1) 의미

  • 매개변수란 함수에 전달되는 입력값을 의미합니다.
  • 매개변수는 함수 내부의 변수인 지역변수입니다.

 2) 사용구조

int Add(int a, int b);
{
    return a + b;
}

└ 여기서 매개변수는 int a, int b 가 됩니다.

└ 데이터형과 변수의 조합으로 사용됩니다.

3.1 실전달인자

 1) 의미

  • 실전달인자란 함수에 실제 전달하는 입력값을 의미합니다.

 2) 사용구조

Add(5, 6);

└ 여기서 실전달인자는 5와 6이 됩니다.

└ 정의된 함수 Add() 를 호출하고, 매개변수의 데이터형에 맞게 정수를 전달합니다.


4. 함수의 데이터형과 반환값

 1) 의미

  • 함수의 데이터형이란 함수의 이름 앞에 선언된 데이터형의 종류를 말합니다.
  • 함수의 반환이란 함수의 데이터형에 맞는 값을 반환하는 것을 말합니다.

 2) 데이터형

double GetPi()

└ 데이터형은 GetPi() 라는 함수의 이름 앞에 붙습니다.

└ 이 함수의 데이터형은 double 입니다.

 

 3) 반환값

double GetPi()
{
    return 3.14;
}

└ 함수의 반환을 하기 위해서는 return 이라는 키워드를 사용합니다.

└ double 이라는 데이터형을 가진 GetPi 라는 함수는 부동소수점형인 3.14 를 반환합니다.

 

 4) 데이터형과 반환이 없는 함수(void 함수)

  • 반환이 없고, 일정 행동만 필요로 하는 함수가 있을 수 있습니다.
  • 이 경우 데이터형 자리에 void 라는 키워드를 사용하고, 반환(return)을 하지 않으면 됩니다.
void PrintHello()
{
    printf("Hello?\n");
}

 4.1) return;

  • 다만 return; 을 사용하면 그 자리에서 함수를 종료시킬 수 있습니다.
void printStr(int num);
{
    if(num == 0)
    {
        printf("NotHello...\n");
        return;
    }
    else
    {
        printf("HelloWorld!\n");
    }
    
    printf("HelloEveryone!!!\n");
}

└ 위 경우 num이 0 인 경우만 NotHello 를 출력하고 함수를 종료합니다.

└ 그 외의 경우에는 함수의 끝까지 진행합니다.


5. 함수의 정의, 선언, 호출

더보기

0. 전체 예제

#include <stdio.h>

int Add(int a, int b);

int main()
{
    int num = Add(5, 6);
    printf("%d", num);
    
    return 0;
}

int Add(int a, int b)
{
    return a + b;
}

1. 함수의 정의

 1) 의미

  • 함수의 정의란 위에서 했던 것처럼 데이터형, 함수이름, 매개변수, 블록, 반환값으로 이루어진 함수를 작성하는 경우를 말합니다.
  • 함수의 실제 행동을 나타냅니다.

 2) 예

int Add(int a, int b);
{
    return a + b;
}

2. 함수의 선언(프로토타입)

 1) 의미

  • 함수의 선언이란 정의된 함수를 컴파일러에게 알리는 것을 말합니다.

 2) 예

int Add(int a, int b);

└ 위 행위로 main() 이라는 함수에서 Add() 라는 함수의 존재를 알게 됩니다.


3. 함수의 호출

 1) 의미

  • 함수의 호출이란 정의와 선언이 된 함수를 불러 사용하는 것을 말합니다.
  • 호출된 함수는 함수의 블록을 실행하고, 반환값으로 대체됩니다.

 2) 예

int main()
{
    int num = Add(5, 6);
    printf("%d", num);
    
    return 0;
}

└ 여기서 Add(5, 6) 이라는 부분이 함수의 호출이고, 반환값은 num 이라는 변수에 대입 연산자를 통해 대입됩니다.

 

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

C언어 : 9. 배열과 문자열  (0) 2026.05.26
C언어 : 7. 분기 제어문  (0) 2026.05.19
C 언어 : 6. 루프 제어문  (0) 2026.05.19
C언어 : 5. 연산자  (0) 2026.05.19
C언어 : 4. 문자열과 입출력  (0) 2026.05.18
'C/Study' 카테고리의 다른 글
  • C언어 : 9. 배열과 문자열
  • C언어 : 7. 분기 제어문
  • C 언어 : 6. 루프 제어문
  • C언어 : 5. 연산자
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
C언어 : 8. 함수
상단으로

티스토리툴바