c언어의 핵심! 함수
main 함수 다시 보기: 함수의 기본 형태
int main (void) // 반환의 형태, 함수의 이름, 입력의 형태
{
함수의 몸체
}
함수를 정의하는 이유
-모듈화에 의한 프로그램의 질 향상이 가ㅡㅇ
-유지 보수 및 확장의 용이성
-문제 해결의 용이성 : "divide and conquer!"
함수 선언의 필요성
-컴파일러의 특성상 , 함수는 호출되기 전에 정의되어야 한다.
함수 선언의 의미
-이후에 정의될 할수에 대한 정보 제공
int add(int a,int b); ----> add 함수의 원형 선언
int main()
{
add(3,4);
return 0;
}
int add(int a,int b) ----> add 함수의 정의
{
int result = a+b;
return result;
}
변수의 범위(scope)
변수의 특성에 따른 분류
-지역 변수(local variable)
-증 괄호 내에 선언되는 변수
-지역 변수는 선언 된 함수 내에서만 접근 가능
-지역 변수는 함수가 끝나면 메모리 공간에서 살아 진다.
-{},경우에 따라서 지역 변수는 다른 지역 변수를 가리기도 한다.
-같은 이름으로 선언된 내부에 선언된 지역 변수는 외부의 지역변수 를 무시하게 된다.
-매개 변수도 지역 변수의 일종이다.
-전역 변수(global variable)
-함수 내에 선언되지 않는 변수
-프로그램 어디에서나 접근이 가능한 변수
-특정 영역(함수, 반복문..)에 속하지 않는다.
-프로그램이 종료될 때까지 존재 한다.
-같은 이름의 지역 변수에 의해서 가려지기도 한다.
-디폴트로 0으로 초기화
-전역변수의 이름과 지역변수의 이름은 현명하게 다르게 할것
-정적 변수(static variable)
-함수 내부 , 외부 모두 선언 가능
-레지스터 변수(register variable)
-선언에 제한이 많이 따름
-보다 빠르게
또 다른 형태의 지역 변수
-while , for ,if 와 같은 문장에 의해 형성 되는 지역 내에서 선언되는 변수
static 변수
-함수 내부 및 외부에 선언 가능하다.
-한번만 초기화된다. 전역 변수의 특징
-함수 내부에서 선언될 경우 함수 내에서만 접근이 가능하다.:지역 변수의 특징
재귀함수
재귀 함수의 기본적 이해
자기 자신을 다히 호출하는 형태의 함수
컴퓨터 구조, 운영체제
-------------------->
-탈출 조건의 필요성
-무한 재귀 호출을 피하기 위해서
자료구조(데이타를 표현하는 방식),알고리즘(문제해결)
/* recursive_basic2.c */
#include <stdio.h>
void Recursive(int n)
{
printf("Recursive Call! \n");
if(n==1)/* 탈출 조건 */
return; /* 함수를 빠져 나간다 */
Recursive(n-1);
}
int main(int argc,char *argv[])
{
int a=2;
Recursive(a);
return 0;
}
재귀 함수 design 사례
-팩토리얼(factorial)계산을 위한 알고리즘
n!=nx(n-1)!
f(n) = n x f(n-1) n이 1이상인 경우
= 1 n이 0인 경우