Language/C C언어 강좌 (return문/함수 인수 전달기법/재귀함수)
  • 728x90
    반응형

     

     

    목차

       

       

      return 

      함수의 결과값은 return문을 통하여 호출자에게 반환된다.

       

      예)

      양의 정수를 입력받아 그 숫자만큼 별표를 출력한다.

      입력값이 50이상이면 50개의 별표만 출력한다.

      입력값이 0이면 프로그램은 종료된다.

      입력값이 음수일 경우 다시 입력할 수 있게 작성되었다.

       

       

      • int getnum()
        • 음수 값을 입력할 경우, 다시 입력할 수 있게 작성되었다.

       

      • int cheknum(int n)
        • 숫자를 50까지 제한하고 있다.

       

      • void printstsr(int n)
        • n이 n-- 가 되어 0이될때까지 *을 찍는다.

       

      결과

       

       

      return 사용 예

      return;    // 반환값없이 함수실행을 종료하는 경우
      return (21);
      return (x + 4);
      return x++; 

       

         

      함수의 인수전달 기법

      • 인수의 전달방법(parameter passing mechanism)
        • 값 전달호출 (call-by-value)
      • return 문을 이용해서 하나의 값만 호출자에게 돌려 줄 수 있다.
        • 주소 전달호출 (call-by-address)
      • 호출자가 피호출자의 형식인수로 주소 값을 전달한 후, 피호출자 내에서 실인수의 주소를 통해서 실인수의 값을 수정하므로, 하나 이상의 변수의 값을 변경시킬 수 있다.

       

      gcc 컴파일 명령어 옵션

      man printf : printf 의 manual ('q'로 exit)
      man 3 printf : programmer's Manual
      printf, scanf 는 가변인자이다. (인수리스트의 개수가 미지정)
      printf(3)의 (3)은 섹션을 뜻한다.

       

       

       

       

      예)

      주소전달 호출을 이용하여 두변수에 들어 있는 값을 바꾸는

      프로그램의 예로 변수 x와 y의 값을 바꾼다.

       

      프로그램 설명

      swap() 함수를 호출하기전 변수 x와 y의 상태

       

       

      swap() 함수가 실행을 시작할때 변수의 상태

       

       

      temp = *px;

      *px가 의미하는 것은 px가 가리키는 메모리의 내용이다.

      px는 x를 가리키므로 변수 x의 값이다.

       

       

      *px = *py;

      *px는 변수 x를 의미하고, *py는 변수 y를 의미한다.

      변수 x는 변수 y의 값을 가지게 된다.

       

      *py = temp;

      *py는 변수 y이다. 변수 y는 temp의 값을 받는다.

       

       

      swap()함수가 종료되면, px, py와 지역변수 temp는 소멸된다.

       

       

      결과

       

       

      재귀함수

      • 재귀함수 (recusive function) 란 함수의 실행부 내에서 그 자신을 호출하는 함수를 말한다.
      • 반복문은 재귀호출로 바꿔 쓸 수 있다.
      • recursive함수는 반복되면서 int형일경우 4byte 씩 계속 생성한다. 메모리를 많이 차지하므로 잘사용되지않는 함수이다.

      예)

      양의정수 n을 입력받아, 재귀호출을 이용하여 n부터 1까지 출력하는 프로그램

       

      결과

       

       

       

       

       

      728x90
      반응형
    상단으로