본문 바로가기
프로그램

[C언어]함수정의와 호출, 선언 함수이용한 기초예시 10강

by y은광 2024. 9. 20.
728x90

함수(function)는 특정한 작업을 수행하도록 만든 문장으로 일정한 처리를 하나로 정리해 두고 작업에 필요한 자료를 전달받을 수 있습니다. 함수는 입력을 받아  처리한 후 결과를 반환하는 것으로 복잡한 프로그램을 편리하게 사용할 수 있습니다. 함수정의와 호출, 선언에 이용한 기초예시를 알아보겠습니다.

 

c언어 코딩
<출처 : Pixabay>

1. 함수정의(function definition)

특정작업을 수행하는 코드로 프로그램의 구조를 체계적으로 만들고 코드의 재사용을 높이는데 도움을 줍니다. 

  • 함수의 반환형 : 함수가 반환하는 값의 데이터 타입
    • 예) void인 경우 함수는 값을 반환하지 않음
  • 함수이름 : 함수를 호출할 때 사용하는 이름
  • 매개변수목록  :  함수가 입력으로 받을 수 있는 변수들의 목록 예) 각 매개변수는 데이터 타입과 이름으로 구성
    • 예) 매개변수 없을 경우 빈 괄호( )를 사용
    • 예) int sum(int a, int b) {
    • return a+b;  } // 두 수의 합을 반환
  • 함수본체 : 함수가 수행할 작업으로 중괄호{ }로 감싸져 있으며 그 안에 실행할 코드가 포함됨. 실제 구현하는 부분

2. 함수선언

함수의 실제 정의보다 앞서 사용할 수 있습니다. 함수 선언은 컴파일러에게 함수의 존재를 알리는 역할을 합니다.

  • 예) int sum(int a, int b); ;을 붙임- sum 함수가 두개의 int 매개변수를 받고 int 타입의 값을 변환함

3. 함수호출

정의된 함수를 실제로 사용하는 것을 의미. 함수 호출 시에는 함수 이름과 괄호 안에 인수를 전달함

  • res=sum(x,y); 함수를 호출하고
  • printf("합계는 %d입니다.\n", res); 결과 출력함

4. 함수이용한 기초예시

  • 합계를 구하는 함수
#include<stdio.h>
/* sum 함수 정의 */
int sum(int a, int b)
{
return a+b;
}
int main(void)
{
int x,y,res;
printf("1번째 정수를 입력하세요.\n");
scanf("%d", &x);
printf("2번째 정수를 입력하세요.\n");
scanf("%d", &y);
res=sum(x,y); //함수호출
printf("합계는 %d입니다.\n", res);
return 0;
}

 

함수1

  • 최댓값 구하는 함수
#include<stdio.h>
/* max 함수선언*/
int max(int a, int b); //;표시

int main(void)
{
int x, y, res;
printf("1번째 정수를 입력하세요.\n");
scanf("%d", &x);
printf("2번째 정수를 입력하세요.\n");
scanf("%d", &y);
res=max(x, y);  // 함수호출
printf("최대값은 %d입니다.\n", res);
return 0;
}

/* max 함수정의*/ 
int max(int a, int b) // ; 없음
{
if (a> b) // a와 b를 비교하여 큰 값을 실행
 return a;
else
return b;
}

함수2

  • 소수 구하는 함수
#include<stdio.h>
int a_p(int);
int b_p(void); 
int main(void)
{
int x, res;
x=b_p(); // 함수 호출
res=a_p(x); // 함수 호출
if(res==1)
printf("%d는 소수입니다.\n", x);
else
printf("%d는 소수가 아닙니다.\n",x);
return 0;
}

int b_p(void) // 정수를 받아서 반환
{
int x;
printf("정수를 입력하세요.   ");
scanf("%d", &x);
return x;
}

int a_p(int x) // 주어진 숫자가 소수이면 1을 반환
{
int i;
for (i=2;i<x;i++)
{
if(x%i==0) // 약수를 하나라도 발견하면 소수가 아니므로 0을 반환
return 0;
}
return 1; // 반복문이 정상적 종료되면 약수가 없으므로 1을 반환
}

함수3

 

  • 라이브러리 함수 짝수 홀수 
#include<stdio.h> 
#include<stdlib.h> // 라이브러리 함수
#include<time.h> // 시간

int even_odd(void); // 함수선언
int main(void)
{
int x;
int even=0;
int odd=0;
srand((unsigned) time(NULL)); // srand-난수의 시드를 설정,  NULL-현재시간
for(x=0;x<100;x++){
if(even_odd(  )==1)
even++;
else
odd++;
}
printf("짝수입니다 : %d \n",even);
printf("홀수입니다 : %d\n",odd);
return 0;
}
int even_odd(void) // 함수정의
{
int a=rand()%2; // 난수를 발생하여 2로 나눈 나머지값으로 0 또는 1 결과
if(a==0)
return 0;
else
return 1;
}

함수4

 

감사합니다.