1. C언어의 함수

- 표준 함수 

- 사용자 정의 함수


2. 함수를 사용하는 이유는?

- 반복적인 프로그래밍을 피할 수 있음.

- 모듈화로 인해 코드 가독성이 좋아짐.

- 유지보수에 용이.


3. 함수의 정의 


int sum(x,y)

{


}


=> 반환자료형 int // 함수가 모든 작업을 마치고 반환하는 데이터의 타입 명시.

     함수이름 sum // 함수 호출을 위한 이름 명시

     매개변수 목록 (x,y) // 함수 호출 시 전달되는 인수의 값을 저장할 변수들을 명시

     함수몸체 { } // 함수의 고유 기능을 수행하는 명령문의 집합.


// 함수 호출 시에는 여러 개의 인수를 전달할 수 있지만, 반환값은 1개를 넘지 못한다. 

   인수나 반환값이 하나도 없는 함수도 존재 가능. 


* 함수의 원형 선언

반환타입 함수이름 (매개변수타입);


 함수를 사용한 예시



#include <stdio.h>
int num(int,int); // 함수의 원형 선언
int main(void)
{
int result;
result=num(5,3); // 함수의 호출
printf("두 수 중 더 큰수는 %d입니다.\n", result);
result=num(3,1);
printf("두 수 중 더 큰수는 %d입니다.\n", result);
result=num(7,5);
printf("두 수 중 더 큰수는 %d입니다.\n", result);
return 0;
}
int num(int num1, int num2) // 함수의 정의
{
if(num1>=num2)
{
return num1;
}
else
{
return num2;
}
}



4. 변수의 유효 범위
- 지역 변수(local variable) // 블록 내에서 선언된 변수, 초기화 x시 쓰레기값.
- 전역 변수(global variable) // 외부에서 선언된 변수, 자동 0으로 초기화.
- 정적 변수(static variable) // 단 한 번만 초기화.
- 레지스터 변수(register variable)


5. 메모리의 구조
- 코드(code) 영역
- 데이터(data) 영역
- 스택(stack) 영역
- 힙(heap) 영역


6. 재귀 호출(recursive call)
- 함수 내부에서 함수가 자기 자신을 또다시 호출하는 행위.

int rSum(int n)

{

    if (== 1)           // n이 1이면, 그냥 1을 반환함.

    {

          return 1;

    }

    return n + rSum(n-1); // n이 1이 아니면, n을 1부터 (n-1)까지의 합과 더한 값을 반환함.

}




'언어 > C' 카테고리의 다른 글

C언어 포인터  (0) 2018.11.07
C언어 배열  (0) 2018.11.06
C언어 제어문  (1) 2018.11.02
C언어 기본2  (0) 2018.11.02
c언어 기본  (0) 2018.11.02

+ Recent posts