입력을 넣었을 때, 출력값이 나오는 블랙박스
c언어에서 제공해주는 기본 함수들을 표준함수라고 하며, printf
가 그 중 하나이다. 함수를 라이브러리화 시켜서 편리하게 사용할 수 있게 해준다. 헤드파일에 수 많은 표준함수들이 정의되어있다.
사용자가 원하는 기능을 함수화시켜 사용할 수 있다.
자료형 함수이름(인수목록)
{
함수의 내용
}
void
두 정수를 입력받아 합을 반환해주는 함수
#include <stdio.h>
int Add(int a, int b);
void main()
{
int a, b, hap;
printf("두 개의 정수를 입력하세요 : ");
scanf("%d%d", &a, &b);
hap = Add(a, b);
printf("두 수의 합 : %d\n", hap);
return;
}
int Add(int i, int j)
{
return i + j;
}
일반적으로 사용자 정의 함수가 main
함수보다 뒤에 있을 경우 에러가 나지만, Add
함수의 첫 줄 int Add(int a, int b)
을 세미콜론과 함께 적어주면(함수의 원형) main
함수보다 뒤에 있더라도 컴파일, 실행될 수 있다.
ex) 함수의 원형(.h)과 소스 코드(.dll)을 따로 관리
main
에 선언된 a, b
값이 Add
함수에 선언된 i, j
에 옮겨질 때, 메모리 값은 복사된다 (call by value
)
결과값을 리턴하지 않는 함수이다.
#include <stdio.h>
int Add(int a, int b);
void print_Start()
{
printf("-----programming start-----\n");
printf("두 개의 정수를 입력하시오 : ");
}
void print_Hap(int result)
{
printf("두 수의 합은 %d 입니다.\n", result);
printf("-----programming end-----\n");
}
void main()
{
int a, b, hap;
print_Start();
scanf("%d%d", &a, &b);
hap = Add(a, b);
print_Hap(hap);
return;
}
int Add(int i, int j)
{
return i + j;
}
-----programming start-----
두 개의 정수를 입력하시오 : 3 5
두 수의 합은 8 입니다.
-----programming end-----
두 수를 입력 받아 최솟값과 최댓값을 출력하는 예제
#include <stdio.h>
void max_min(int i, int j);
int main()
{
int a, b;
printf("두 개의 정수를 입력하세요 : ");
scanf("%d%d", &a, &b);
max_min(a, b);
}
void max_min(int i, int j)
{
if(i > j)
{
printf("최댓값 : %d 최솟값 : %d\n", i, j);
}
else if(j > i)
{
printf("최댓값 : %d 최솟값 : %d\n", j, i);
}
else
{
printf("두 수의 값이 같습니다.\n");
}
}
같은 이름이더라도 다른 지역({}
)의 함수에 속해 있으면 독립된 다른 변수이다. 지역({}
)이 끝나게 되면 스택메모리에서 소멸된다. 스택 메모리에서 관리되므로,FILO
성격을 가진다.
전역변수는 프로그램이 시작하자 마자 메모리 상에 올라가서 프로그램이 종료될 때 메모리 상에서 소멸된다. 전역변수는 스택 메모리가 아닌 데이터 메모리에서 관리된다.