함수
프로그램을 구성하는 기본적인 구성요소. 하나의 프로그램은 여러 함수들이 모여 이루어진다.
각 함수들은 다른 함수들과 연결되어서 하나의 프로그램을 구성할 수 있으며, 한번 만들어지면 다른 프로그램에서도 재사용될 수 있다.
또 함수를 사용하면 가독성이 증대되고, 유지관리도 쉬워지는 장점도 있다.
함수의 특징
- 함수는 서로 구별되는 이름을 가지고 있어야 한다.
- 함수는 특정한 작업을 수행한다.
- 함수는 입력을 받을 수 있고, 수행 결과를 반환할 수 있다.
함수의 장점
- 함수를 사용하면 코드가 중복되는 것을 막을 수 있다.
- 한번 작성된 함수는 여러 번 재사용 할 수 있다.
- 함수를 사용하면 전체 프로그램을 모듈로 나눌 수 있어서 개발 과정이 쉬워지고 보다 체계적이 되면서 유지 보수도 쉬워진다.
#include<stdio.h>
/*함수의 이해*/
int main(void)
{
for (int i = 0; i < 10; i++)
printf("*");
printf("\n");
for (int i = 0; i < 10; i++)
printf("*");
printf("\n");
for (int i = 0; i < 10; i++)
printf("*");
printf("\n");
}
#include<stdio.h>
/*함수의 이해*/
void print_star()
{
for (int i = 0; i < 10; i++)
printf("*");
printf("\n");
}
int main(void)
{
print_star();
print_star();
print_star();
}
예를 들어 설명해보면 함수를 사용하지 않았을 경우 중복되는 코드를 여러 번 써야 한다. 하지만 함수를 이용하면 한번 정의된 함수는 여러 번 호출하여 실행이 가능하다.
함수를 호출할 때에는 함수의 이름을 적어주면 함수가 실행이 된다.
함수의 연결
main() 함수는 항상 가장 먼저 자동으로 실행되는 함수이다. 다른 함수들은 main() 함수에서 진 간접적으로 호출되어 실행되어야 한다.
함수 정의
함수는 헤더와 함수 몸체로 크게 나눌 수 있다.
- 함수 헤더: 반환형, 함수 이름, 매개변수 목록
- 함수 몸체: 중괄호에 둘러싸인 부분. 몸체 안에는 함수가 수행하는 작업에 필요한 문장들이 들어간다.
반환형
함수가 처리를 종료한 후에 호출한 곳으로 반환하는 데이터의 유형을 말한다.
int, char, long, double 등 다양한 반환형이 있으며 반환을 하지 않을 경우에는 void를 쓴다.
만약 반환형을 명시하지 않으면 int형으로 가정하지만, 특별한 경우가 아니면 반환형을 생략해서 안된다. 반환값이 있는 함수에서 값을 반환하지 않으면 예측 불가능한 값이 전달된다.(오류가 난다)
매개변수
외부에서 함수를 호출할 때 작업에 필요한 데이터 값을 보낼 수 있다. 매개변수는 이러한 데이터를 받는 변수이다. 매개변수는 여러 개가 될 수도 있으며, 각 매개변수 눈 쉼표로 분리한다.
만약 매개변수 가 없는 경우, 매개변수 위치에 void를 써주거나 비워두면 된다.
함수 몸체
함수는 중괄호로 둘러싸여이다 함수가 수행하는 작업에 필요한 문장들이 들어간다.
return 문장을 만나게 되면 문장의 실행을 멈추고 호출한 곳으로 돌아간다.
함수 호출
-
인수와 매개변수
인수와 매개변수는 함수 호출시 데이터를 주고받기 위하여 필요하다.
인수는 호출 프로그램에 의하여 함수에 실제로 전달되는 값이다. 함수가 호출될 때마다 인수는 함수의 매개변수로 전달된다.
함수가 호출될 때마다 인수는 달라질 수 있다. -
반환값
반환값은 함수가 호출한 곳으로 반환하는 작업의 걸과 값이다.
호출한 곳으로 반환하려면 return 문장을 쓰고 그다음에 반환하고자 하는 수식을 넣어야 한다.
반환값의 형은 함수를 정의할 때 기술하였던 반환값의 형과 일치하여야 한다.
만약 반환값이 없다면 return 다음에 아무것도 써주지 않거나, return 문장을 사용하지 않으면 된다.
[출처] C언어 Express
'Programming > C Language' 카테고리의 다른 글
[C언어] 포인터 (2) | 2020.03.29 |
---|---|
[C언어] 배열 (2) | 2020.03.28 |
[C언어] 반복문 (4) | 2020.03.26 |
[C언어] 조건문 (2) | 2020.03.25 |
[C언어] 수식과 연산자 (0) | 2020.03.24 |