함수 (전달인자, 반환값)
함수는 여러 번 반복되는 코드를 한 번만 쓰고 싶거나 긴 코드를 분할해서 작성할 때 사용한다.
함수에는 매개변수(입력값)와 반환값(출력값)이 존재한다.
그러나 매개변수와 반환값이 필수는 아니다.
예를 들어 main 함수는
int main ()
{
return 0;
}
의 형태로 이루어져 있다.
여기서 소괄호안에 들어갈 값이 매개변수이고 return 뒤의 값이 반환값이다.
따라서 main 함수는 매개변수가 없고 반환값이 0인 함수라고 할 수 있다.
함수 선언
함수를 선언하는 방법은 다음과 같다.
매개변수는 함수 밖에서 입력받은 값을 함수 안에서 처리할 때 사용된다.
반환값은 함수가 반환할 값이고 반환형은 그 반환값의 자료형이 된다.
따라서 위 코드는 두 개의 정수를 입력받아 더한 값을 출력하는 'alpha'라는 이름의 함수이다.
'alpha' 함수는 2개의 매개변수가 있고 int형 값을 반환하는 함수가 된다.
'alpha' 함수를 선언하고 사용하는 방법은 다음과 같다.
#include <stdio.h>
#pragma warning(disable:4996)
int alpha (int a, int b)
{
return a+b;
}
int main ()
{
int k;
int j;
printf("두 개의 정수 입력 : ");
scanf("%d %d", &k, &j);
printf("두 정수를 더한 값 : %d", alpha(k, j));
return 0;
}
함수의 선언과 정의 분리
함수의 선언과 정의를 분리할 수도 있다.
#include <stdio.h>
#pragma warning(disable:4996)
int alpha (int a, int b);
int main ()
{
int k;
int j;
printf("두 개의 정수 입력 : ");
scanf("%d %d", &k, &j);
printf("두 정수를 더한 값 : %d", alpha(k, j));
return 0;
}
int alpha (int a, int b)
{
return a+b;
}
위 코드는 함수 'alpha'를 먼저 선언만 해준 후에 main 함수 아래에서 정의를 해준 코드이다.
선언만 먼저 할 때에는 함수에 세미콜론을 붙여야 한다.
정의를 분리해서 작성하더라도 함수를 사용하기 전에 선언을 해주어야 하는 것은 마찬가지이다.
return
return에는 두 가지 의미가 있다.
함수를 종료하겠다는 의미와 값을 반환하는 의미를 지닌다.
그런데 return 은 두 가지 의미 중 한 가지 의미만으로 사용될 수도 있다.
값을 반환하지 않는 함수에 return; 만을 사용하여 함수를 종료하겠다는 의미만을 사용할 수도 있다.
예를 들어 양수인지 음수인지 판단하는 함수 'judge'를 만들어보겠다.
이 'judge' 함수는 음수 또는 0을 받으면 그냥 종료하고 양수를 입력받으면 "양수를 입력받았습니다"라고 출력하게 하려고 한다.
따라서 'judge' 함수는 다음과 같이 작성하여 쓸 수 있다.
#include <stdio.h>
#pragma warning(disable:4996)
void judge (double a)
{
if (a>0)
printf("양수를 입력받았습니다.");
else if (a<=0)
return;
}
int main ()
{
double a;
printf("임의의 실수하나를 입력하세요 : ");
scanf("%lf", &a);
judge(a);
return 0;
}
return 을 사용하지 않아도 함수는 정상적으로 작동할 수 있다.
따라서 다음과 같은 코드도 오류 없이 실행될 수 있을 것이다.
#include <stdio.h>
#pragma warning(disable:4996)
void judge (double a)
{
if (a>0)
printf("양수를 입력받았습니다.");
}
int main ()
{
double a;
printf("임의의 실수하나를 입력하세요 : ");
scanf("%lf", &a);
judge(a);
}
그러나 값을 반환하지 않음에도 return 을 사용하는 이유는 기계에 함수를 정상적으로 종료했다는 의미를
전달하여 오류 등을 미리 방지할 수 있기 때문이다.
파라미터(Parameter), 아규먼트(Argument)
함수의 구성요소를 부르는 용어 중 파라미터, 매개변수, 아규먼트, 전달인자라는 용어가 있다.
우선 파라미터와 매개변수는 같은 의미이고, 아규먼트와 전달인자는 같은 의미이다.
이 용어들을 설명하기 위해 아까 썼던 코드를 다시 사용하겠다.
#include <stdio.h>
#pragma warning(disable:4996)
int alpha (int a, int b)
{
return a+b;
}
int main ()
{
int k;
int j;
printf("두 개의 정수 입력 : ");
scanf("%d %d", &k, &j);
printf("두 정수를 더한 값 : %d", alpha(k, j));
return 0;
}
위 코드에서 파라미터(Parameter), 즉 매개변수는 int a, int b이다.
파라미터(매개변수)는 함수 밖의 값을 함수 안에서 사용할 수 있게 연결해 주는 변수이다.
위 코드에서 아규먼트(Argument), 즉 전달인자는 k, j이다.
함수가 다른 곳에서 호출되어 사용될 때 전달받은 실제 값이 아규먼트(전달인자)이다.
'C언어 > C언어 문법' 카테고리의 다른 글
[C언어] 지역변수, 전역변수 (0) | 2024.02.11 |
---|---|
[C언어] 재귀함수 (0) | 2024.02.10 |
[C언어] switch문 (0) | 2024.02.10 |
[C언어] break, continue (0) | 2024.02.10 |
[C언어] 조건문 (if문, else if문) (0) | 2024.02.09 |