ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C언어] 5-3. 사용자 정의 함수
    프로그래밍/C 2014. 4. 5. 22:33
    반응형

    - 사용자 정의 함수는 소스 코드 작성 시 프로그래머가 직접 함수를 선언하고 정의해서 사용하는 함수이다.

    - 모든 함수는 반드시 함수의 자료형을 가져야한다.


    1. 함수의 정의

    - 기본적인 함수이 정의는 다음과 같은 구조로 설계되어있다.

    함수형 함수명(매개변수1, 매개변수2, ...)     // 함수 header

    {

    내부 변수 선언;

    실행문장들;

    ...                    //  함수 내용 영역 (함수 몸체)

    return;

    }




    * 함수형

    - 함수가 수행된 후 리턴할 값의 타입이 함수형

    - 함수의 리턴형이 void형이면 함수는 리턴 값이 없는 함수임을 의미하고, 함수의 리턴형을 생략하면 기본적으로 int형으로 간주한 후 int형 값을 리턴

    - 값을 리턴할때에는 반드시 한 개의 값만 리턴해야한다.


    * 함수명

    - 함수의 이름은 일반변수에 이름을 부여할 때의 규칙을 따른다.

    - 영문자로 시작해야 하며 숫자와 특수문자 중 _의 사용만 가능하다.

    - 함수의 이름은 함수가 수행하는 기능과 연관된 이름을 부여하는 것이 일반적


    * 매개변수

    - 함수를 호출할 때 사용되는 변수로 매개변수(parameter) 또는 인자(argument)라고도 한다.

    - 매개변수가 주어진 경우 함수 호출 시 반드시 그 타입과 개수를 맞추어 주어야 한다.


    * 함수 내용 영역

    - 함수가 수행할 기능을 명령어들로 정의하는 부분

    - 필요한 경우 내부 변수를 선언하기도 하고 리턴값을 지정하는 명령문인 return문도 이곳에서 사용


    2. 함수의 사용과 호출


    * 사용자 정의 함수의 사용

    - 예제로 설명해야하지만 시간상 스킵하겠다..




    3. 자료의 전달 방법

    - C언어에서 함수 호출 시 매개변수 사이에 데이터를 전달하는 방법은 크게 2가지로 분류된다.

    - 값 자체를 복사해서 넘기는 값에 의한 전달 방법 (Call by value)

    - 값이 들어 있는메모리의 주소를 넘겨서 그 주소에 들어 있는 값을 함께 공유하는 참조에 의한 전달 방법 (Call by address)


    * 값에 의한 전달 방법 (call by value)

    - 값에 의한 자료 전달의 경우는 호출함수의 실 매개변수와 피호출 함수의 형식 매개변수 사이에 값 자체를 복사해서 전달하는 방법

    - 실매개변수 값이 형식 매개변수에 그대로 복사되어 전달


    * 참조에 의한 전달 방법 (call by address)

    - 참조에 의한 자료전달의 경우는 호출함수가 매개변수의 값으로 실제값이 아닌 값이 저장되어 있는 메모리의 주소를 전달해서 해당 주소에 들어 있는 값을 두 매개변수가 공유해서 사용하는 방법

    - 값이 들어 있는 메모리의 주소를 나타내기 위해서는 변수명 앞에 & 기호를 붙여 사용


    * 정리후기

    - 시간적 문제로 예제 코드를 쓸수 없다는게 좀 걸린다. 혹시나 이걸 보고 계신분들은 이론용으로만 사용하시길 바란다. 코드는 실제로 타이핑해가면서 익혀야 가장 좋은 방법일 것이나 책에 수록되어 있는 코드를 수록하는것은 시간상으로도 시간이 많이 걸리는 문제이지만 저작권법상으로도 문제가 있는 행위이므로 내용을 요약하는것에 만족하도록 하겠다.

    반응형

    '프로그래밍 > C' 카테고리의 다른 글

    [C언어] 6-1. 배열  (0) 2014.04.07
    [C언어] 5-4. 기억클래스  (0) 2014.04.06
    [C언어] 5-2. 표준함수  (0) 2014.04.05
    [C언어] 5-1. 함수의 개념  (0) 2014.04.05
    [C언어] 4-3. 기타 제어문  (0) 2014.04.05

    댓글

Designed by Tistory.