1. 함수의 정의
2. 지역변수와 전역변수
: 함수 안에서 정의되는 변수는 지역 변수라고 부르고, 해당 함수 안에서 만 사용이 가능하다. 반면에 함수의 외부에서 선언되는 변수는 전역 변수라고 불린다.
함수의 매개변수는 지역 변수일까?
맞다! 다만 초기값은 인자로 받는 다는 점에서만 다르고 나머지는 지역 변수의 특징과 같다.
지역 변수 | 전역 변수 | |
기본 초기값 | 쓰레기 값 | 0 |
동시에 존재할 경우 | { } 내부에서는 지역 변수가 우선이다. | { } 외부에서는 전역 변수가 우선이다. |
3. 정적 지역 변수
: 블록에서만 사용되지만 블록을 벗어나도 자동으로 삭제되지 않는 변수 / 앞에 static을 붙인다.
: 함수가 여러번 선언되어도 새로 초기화하지 않고 호출된 이후 연산된 값을 유지한다.
: 정적 지역변수는 함수내부에서만 사용이 가능하고, 전역 변수는 함수 밖에서도 사용이 가능하다.
#include<stdio.h>
void sub(void){
int auto_count = 0;
static int static_count = 0;
auto_count++;
static_count++;
printf("auto_count=%d\n, auto_count);
printf("static_count=%d\n, static_count);
}
int main(void){
sub(); //auto_count=1 / static_count=1
sub(); //auto_count=1 / static_count=2
sub(); //auto_count=1 / static_count=3
return 0;
}
4. 순환 호출
: 순환은 함수가 자기 자신을 호출하여 문제를 해결하는 프록래밍 기법이다.
5. 순환 호출을 이용해서 팩토리얼 구현하기
#include <stdio.h>
int factorial(int);
int main(void)
{
int x = 0, result;
printf("정수를 입력하시오: ");
scanf("%d", &x);
result = factorial(x);
printf("%d!은 %d입니다.\n", x, result);
return 0;
}
int factorial(int n){
printf("factorial(%d)\n", n);
if(n<=1) return 1;
else return n*factorial(n-1);
}
6. 순환 호출을 이용해서 피보나치 수열
#include <stdio.h>
int fibbonacci(int);
int main(void)
{
for(int i=0; i<10; i++){
printf("%d", fibbonacci(i));
}
}
int fibbonacci(int n){
if(n==0) return 0;
else if(n==1) return 1;
else return (fibbonacci(n-2) + fibbonacci(n-1));
}
7. 순환 호출을 이용해서 테일러 급수
#include <stdio.h>
#include <math.h>
int factorial(int);
int main(void)
{
double sum = 0.0;
int x, n;
printf("x와 n의 값을 입력하시오: ");
scanf("%d %d", &x, &n);
for(int i = 0; i <= n; i++){
sum += pow(x, i) / factorial(i);
}
printf("e^%d = %.3lf\n", x, sum);
}
int factorial(int n){
printf("factorial(%d)\n", n);
if(n<=1) return 1;
else return n*factorial(n-1);
}
'2학년 2학기 > c언어' 카테고리의 다른 글
9-2장 포인터의 연산 (0) | 2024.10.28 |
---|---|
9-1장 포인터란? (0) | 2024.10.28 |
7장 배열 (1) | 2024.10.25 |
6장 (1) | 2024.10.25 |
5장 조건문 (0) | 2024.10.24 |