int sum (int x, int y)
int input (void) //
void print (int x)
void output (void)
#include <stdio.h>
int max(int a, int b) // Function definition
{
if(a>b)
return a;
else
return b;
}
int main(void) // Function call
{
int i, j;
int k;
printf("Enter two numbers :");
scanf("%d %d", &i, &j);
k = max(i, j);
printf("The large number of %d or %d is %d \n", i, j, k);
return 0;
}
ex)
#include <stdio.h>
double divide(double x, double y); // Function declaration
double input(void); // Function declaration
void output(double x); // Function declaration
void information(void); // Function declaration
int main(void)
{
double num1, num2, result;
information(); // Function call
printf("Enter the first real number: ");
num1 = input(); // Function call
printf("Enter the second real number: ");
num2 = input(); // Function call
result = divide(num1, num2);
output(result);
return 0;
}
double divide(double x, double y) // Function definition
{
double val;
val = x / y;
return val;
}
double input(void) // Function definition
{
double val;
scanf("%lf", &val);
return val;
}
void output(double x) // Function definition
{
printf("Divide results: %lf \n", x);
return;
}
void information(void)
{
printf("----- start program ----- \n");
return;
}
cf. '정적 전역 변수'도 존재함, 해당 파일 내에서만 전역 변수로 사용하고 외부에서 참조 못하게 하는 변수
ex)
while(1)
{
static int num=0; // 초기화는 최초 한 번만 실행
num=num+1;
printf("%d \n", num);
}
위와 같은 코드가 있을 때 num은 한 번만 초기화 되기에 0,1,2,3,4, ... 값을 받을 수 있음
실행 중인 프로그램을 프로세스라고 함.
프로세스는 메모리 공간을 위와 같이 크게 나누어 사용.
이러한 영역들을 기억 부류(Storage Class)라고 함.
기억 부류(Storage Class)의 역할
코드 영역: 실행 코드, 함수들이 저장되는 역역
말 그대로 코드 영역이니 실행 코드가 들어감
스택 영역: 함수 호출에 의한 매개 변수, 지역 변수
전역 변수와 달리 프로그램 진행 시에도 메모리가 소멸되는 변수들은 구분하여 스택에 들어감
데이터 영역: 전역 변수와 정적 변수
프로그램 실행부터 종료까지 사용하는 데이터들은 지역 변수와 구분하여 데이터 영역에 들어감
힙 영역: 동적 메모리를 할당하는 변수
이렇게 구분되어진 이유는 변수들이 선언되는 위치나 종류에 따라 메모리상에 존재하는 기간이 다르기에 구분해서 저장함.
Reference
강의: 박정민, 『C 프로그래밍』, KOCW 한국산업기술대학교, 9강
교재: 박정민, 『열혈강의 C 언어 본색 명강의가 일으키는 C 언어 기적』, 프리렉 (2011), p227-266.