IT

기초컴퓨터프로그래밍 C언어(8)-함수

배채 2025. 1. 8. 11:42

 

 

C언어 함수 완벽 가이드: 개념부터 활용까지

함수 개념

수학에서 배운 개념과 유사합니다. 특정한 입력을 받아서 작업을 수행하면 결과를 반환하는 상자입니다. 동일한 코드를 여러 번 쓸 때 주로 함수를 사용합니다.

C언어에는 사용자 정의 함수와 라이브러리 함수가 있습니다. 라이브러리 함수는 printf(), scanf() 등 C언어에서 제공하는 기본 함수이며, <stdio.h> 헤더 파일 안에 포함되어 있습니다. 사용자 정의 함수는 사용자가 직접 제작한 함수입니다.

int main(void)에서 main()은 C언어 기본 함수 이름입니다. int는 함수가 정수 값을 반환한다는 것을 의미하고, void는 함수가 값을 반환하지 않음을 의미합니다. double, float 등 다른 자료형을 사용하여 함수를 정의할 수도 있습니다.

int main(void)에서 void는 생략 가능합니다. void는 반환형이 없다는 뜻입니다. int, double 등으로 함수를 정의할 때는 return 값을 반드시 작성해야 합니다.

함수 생성

다음은 별을 90번 찍는 코드입니다. 함수를 사용하지 않아 비효율적입니다.

#include <stdio.h>

int main() {
  int i = 0;
  for (int i = 0; i < 30; i++) {
    printf("*");
    printf("\n");
  }
  for (i = 0; i < 30; i++) {
    printf("*");
    printf("\n");
  }
  for (i = 0; i < 30; i++) {
    printf("*");
    printf("\n");
  }
  return 0;
}

이 코드를 함수를 사용하여 효율적으로 바꿔보겠습니다.

#include <stdio.h>

void print_star() {
  int i = 0;
  for (int i = 0; i < 30; i++) {
    printf("*");
    printf("\n");
  }
}

int main() {
  print_star();
  print_star();
  print_star();
  return 0;
}

30번까지 별을 찍는 코드를 함수로 만들어서 3번 호출했습니다. 반복문을 이용해서 함수를 3번 호출하는 코드도 가능합니다.

결과는 다음과 같습니다.

출력화면

함수의 3단 구조

#include <stdio.h>

void print_star(); // 함수의 원형

int main() {
  print_star(); // 함수 호출
  print_star();
  print_star();
  return 0;
}

void print_star() { // 함수 정의
  int i = 0;
  for (int i = 0; i < 30; i++) {
    printf("*");
    printf("\n");
  }
}

일반적으로 협업을 할 때 많이 쓰는 3단 구조입니다. 프로그램이 복잡해질수록 3단 구조가 가독성을 높여줍니다.

인수와 매개변수

인수는 전달하려는 값이고 매개변수는 외부에서 함수 호출 시 받아오는 값입니다. int main(void)int main()은 매개변수가 없다는 점에서 동일합니다.

아래 예제 코드를 통해 설명해보겠습니다.

#include <stdio.h>

// 두 정수 중 더 큰 값을 반환하는 함수 정의
int max(int x, int y) {
  if (x > y) {
    return x;
  } else {
    return y;
  }
}

int main() {
  int x, y;
  printf("정수를 입력하시오: ");
  scanf("%d", &x);
  printf("정수를 입력하시오: ");
  scanf("%d", &y);

  int larger;
  larger = max(x, y); // 함수 호출

  printf("더 큰 값은 %d입니다. \n", larger);

  return 0;
}

매개변수: 함수 정의에서 사용되는 변수로, 함수가 호출될 때 전달된 인자의 값을 받습니다. 예제 코드에서 max 함수의 int xint y가 매개변수입니다.

인자: 함수가 호출될 때 함수로 전달되는 실제 값입니다. 예제 코드에서 max(x, y) 호출 시, xy가 인자입니다.

결과는 다음과 같습니다.

출력화면

 

조금 더 응용해 보겠습니다.

#include <stdio.h>

int max(int x, int y) {
  if (x > y) {
    return x;
  } else {
    return y;
  }
}

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

int main() {
  int x, y;
  int larger;
  // 정수 한 개를 입력하는 함수 get_integer()로 변환
  x = get_integer();
  y = get_integer();

  larger = max(x, y);
  printf("더 큰 값은 %d입니다. \n", larger);
  return 0;
}

이전 코드와 다른 점은 정수를 입력받는 함수 get_integer()가 추가된 것뿐입니다.

Copyright 2025. All rights reserved.

반응형