Notice
Recent Posts
Link
«   2026/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
Archives
Today
Total
관리 메뉴

One Step Two Step

[C언어 기초] 프로그램을 구성하는 핵심 부품, '함수(Function)' 본문

복습/C언어

[C언어 기초] 프로그램을 구성하는 핵심 부품, '함수(Function)'

DEVILOW 2026. 3. 1. 23:56
반응형
  • 함수(Function): 입력(input)을 받아서 특정한 작업을 수행하여 결과를 반환(return)
    • 장점
      1. 코드의 재사용성: 똑같은 코드를 여러 번 복사 붙여 넣기 X
      2. 유지보수 용이: 특정 기능에 문제가 생기면 그 함수만 수정
      3. 가독성 향상: main 함수가 깔끔해져서 프로그램의 전체 흐름을 파악하기 좋음
    •  종류
      1. 사용자 정의 함수: 개발자가 함수를 직접 개발
      2. 라이브러리 함수: 기본적으로 제공되는 함수
    • 함수 원형 (function prototype)
      • 컴파일러에게 함수에 대해 미리 알리는 것
      • 함수 원형 선언 안할 시에는 무조건 main 함수 위에 다른 함수를 작성해야 함
    • 기본 구조
      #include <stdio.h>
      
      // 1. 함수 선언(함수 원형)
      int add(int a, int b); // 반환형 함수이름(매개변수1, 매개변수2, ...);
      
      int main(void) {
          int result;
      
          // 2. 함수 호출
          result = add(5, 3); 
      
          printf("결과: %d\n", result);
          return 0;
      }
      
      // 3. 함수 정의
      int add(int a, int b) {	// 반환형 함수 이름 (매개변수)
          return a + b; // 함수 몸체
      }
  • 인수 VS 매개변수
    • 매개변수 (parameter)
      • 함수를 정의할 때 사용하는 변수
      • 외부에서 전달될 값을 함수 내부로 연결해 주는 통로
      • 인수의 값이 전달되어 똑같은 값을 가질 뿐 똑같은 개념은 아님
      • 함수 내부에서만 살아있는 지역 변수
    • 인수 (argument)
      • 함수를 호출할 때 실제로 전달하는 값
      • 매개변수에 복사되어 들어갈 실제 데이터
      • 숫자, 문자, 변수, 다른 함수의 결과값이 될 수도 있다.

  • 라이브러리 함수 ( library function )
    • 컴파일러에서 제공하는 함수  ☞  printf(), scanf(), sqrt(), time(), ...
    • "math.h" 라이브러리 함수


문제 1. 이진수를 출력하는 프로그램을 작성하시오.
       int_get_number(); > 사용자로부터 정수를 입력받는 함수
       void print_binary(int); > 이진수를 출력하는 함수

정수를 입력하시오: 33
100001
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>		// "stdio.h", "math.h" 라이브러리 함수 사용 

int get_number(void);		//"get_number" 함수 원형 선언
void print_binary(int x);	//"print_binary" 함수 원형 선언

int main(void) {
	int Input = get_number();
	print_binary(Input);
	printf("\n");
	return 0;
	
}

int get_number() {
	int n;
	printf("정수를 입력하시오: ");
	scanf("%d", &n);
	return n;
}

void print_binary(int x) {
	if (x > 0) {
		print_binary(x / 2);
		printf("%d", x % 2);
	}
}
반응형