본문 바로가기
프로그래밍 언어/C

C언어 - 6. 함수와 기억클래스(1)

by nomfang 2021. 3. 14.
728x90
반응형

함수의 개념

함수

  • 특정한 작업(기능)을 수행하도록 설계된 독립적인 프로그램
  • 함수들이 정해진 순서에 따라 실행됨으로써 프로그램의 기능을 수행

C 프로그램은 함수들로 구성되어있다

  • 전체의 실행 내용을 몇 개의 모듈로 분류
  • 각각의 모듈에 해당하는 내욜을 함수로 작성
  • 실행순서에 따라 함수들을 차례로 호출하여 실행

함수의 특성

  • 함수들은 서로 자유롭게 호출 가능
  • 모든 함수는 서로 독립적

함수의 장점

  • 프로그램의 수정이 용이하다
  • 재사용으로 코드 중복을 최소화한다
  • 프로그램의 기능을 한눈에 파악할 수 있고 유지관리에 용이하다

함수를 기능별로 분리해야 하는 이유

  • 함수의 길이를 줄여 가독성
  • 수정 및 재호출 용이
  • 기능별 독립된 단위의 함수로 구성한 경우 효율적이다

C언어에서의 함수

  • 표준함수: C언어에서 제공하는 함수
  • 사용자 정의함수: 사용자가 정의하여 사용하는 함수

표준 함수

  • 표준함수의 원형은 헤더파일에 정의되어있다
  • 표준함수의 실체는 라이브러리 파일에 수록되어있다
  • 표준함수를 사용하려면 원형이 선언되어있는 헤더파일을 선행처리 부분에서 #include<> 해야함

표준함수 원형의 예

  • printf(), scanf() 함수의 원형
    -> 헤더파일에 정리되어 있음(stdio.h)
    -> 사용하기 위해서는 stdio.h를 #include<>해줘야한다
  • sin(), cos() -> math.h

exp(x) : x의 지수값 -> e (2.71828...)의 x승

pow(x, y) : x의 y승

strlen(): 문자열의 길이

isalpha(): 영문자 여부

isdigit() :숫자 여부

사용자 정의 함수

C프로그램에서의 함수

  • main()함수 안에 표준함수를 사용하는 형태
  • 전체 프로그램을 짧은 단위 프로그램으로 나누어 정의

사용자 정의 함수

  • 사용자가 단위 프로그램을 함수로 정의하여 사용하는 것
#include <stdio.h>

int sum(int a, int b);

int main(void) {

    int x, y, c;

    x = 10;
    y = 20;
    c = sum(x, y);
    printf("%d", c);
}

int sum(int a, int b){
  int d;
  d = a + b;
  return(d);
}

함수 정의의 구조

반환자료형 함수명 (자료형 매개변수1, 자료형 매개변수2, ...) <- 함수 헤더
{
함수몸체
}

반환자료형

  • 계산된 결과값을 호출한 함수에 되돌려 줄 때의 자료형
  • 사용될 수 있는 자료형은 C언어의 모든 자료형
  • 생략할 경우 int형으로 간주된디
    • 반환값이 없을 경우 void로 작성

함수명, 매개변수

  • 함수명
    -> 변수명을 정하는 규칙과 동일한 방식으로 정한다
    -> 의미 있는 함수명을 정하는 것이 도움이 된다
  • 자료형과 매개변수
    -> 자료형은 매개변수의 자료형을 나타냄
    -> 매개변수는 호출함수와 피호출 함수 사이에 자료를 주고 받기 위해 사용
    -> 매개변수는 해당 함수 내에서 변수처럼 사용
    -> 매개변수가 여러개일 경우는 콤마(,)로 구분
    ** 매개변수가 없으면 void로 작성

함수 몸체

  • 함수가 하는 일을 정의하는 부분
  • 중괄호를 이용하여 시작과 끝을 나타냄
  • C언어의 기본 구조와 동일

main()함수

  • 반환 자료형의 void는 반드시 명시(생략시 int로 처리된다)
  • void와 공백은 동일한 의미
  • 반환자료형이 있는 경우 return() 값 명시

함수의 사용

  1. 함수의 원형 선언
  2. 함수의 호출
  3. 함수의 정의로 구성

함수의 원형 선언

  • 함수는 변수와 같이 사용되기 전에 미리 선언
  • 함수의 원형 선언은 일반적으로 main()함수 이전에 한다
  • 함수의 헤더 부분에 세미콜론만 추가하면 된다
    • 함수의 원형 선언은 함수와 관련된 3가지 성질을 선언
      -> 반환형, 매개변수의 개수, 매개변수의 자료형
  • 피호출 함수가 main()함수 뒤에 선언되어있을 경우 원형선언이 꼭 필요하다
    -> main()함수 이전에 피호출 함수를 작성하면 필요없음

함수의 호출

  • 함수는 일종의 부 프로그램
  • 함수의 호출이 있어야한다
  • 함수의 호출 방법 -> 함수 이름과 매개변수 나열

매개변수

  • 실 매개변수 (호출하는 함수의 매개변수)
  • 형식 매개변수 (호출당하는 함수에 쓰이는 매개변수)
    • 실 매개변수와 형식 매개변수의 자료형과 개수가 일치해야함
  • 자료형이 일치하지 않을 경우는 형변환이 발생(형식 매개변수와 같은 형식으로)
  • 변수의 개수가 일치하지 않는 경우에는 컴파일 에러

결과값 반환 (return문)

반응형

댓글