일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- spring boot
- TypeORM
- nestJS
- 코테
- 구조체배열
- @Component
- 카카오 코테
- 스프링
- 가상면접사례로배우는대규모시스템설계기초
- 프로그래머스
- Spring
- python
- 컴포넌트스캔
- 알고리즘
- 시스템호출
- C++
- 파이썬
- nestjs auth
- AWS
- git
- @Autowired
- 카카오 알고리즘
- 카카오
- 해시
- C언어
- 코딩테스트
- OpenCV
- nestjs typeorm
- thymeleaf
- Nodejs
- Today
- Total
공부 기록장 💻
[C언어] 함수(function)의 정의, 선언, 호출 / 함수의 매개변수, 반환값, 함수 원형 본문
[C언어] 함수(function)의 정의, 선언, 호출 / 함수의 매개변수, 반환값, 함수 원형
dream_for 2021. 1. 25. 21:55함수의 종류에는 두 가지가 있다.
사용자가 직접 정의하여 만드는 '사용자 정의 함수',
그리고 자주 사용되어 프로그래머들이 미리 만들어놓은, 컴파일러에서 제공되는 '라이브러리 함수'가 있다.
기본적으로 사용하는 printf(), scanf() 함수들은 <stdio.h> 헤더 파일 내에 이미 정의되어 있는 라이브러리 함수들 중 일부이다.
사용자 정의 함수는 특정한 기능을 수행하는, 말그대로 프로그래머 개인이 직접 작성한 함수를 의미한다.
사용자 정의 함수를 어떻게 작성하는지, 간단히 정리해보고자 한다.
함수의 정의(defnition)
함수엔 헤더(header)와 몸체(body) 부분이 존재한다.
헤더 영역에는, 함수를 호출하여 얻는 결과값의 반환형, 그리고 함수의 이름, 괄호에는 매개변수의 목록(반환형과 매개 변수명)을 작성해준다.
몸체 영역에는, 함수가 수행하는 기능의 코드를 작성해준다.
함수는 반환값이 있는 경우가 있고, 없는 경우가 있다.
있는 경우에는 결과값의 자료형을 작성하고, 몸체의 마지막 부분에 return 문장을 작성해주어야 한다.
없는 경우에는 반환형은 void로 작성하고, return 문장은 작성하지 않아도 된다.
해당 함수를 호출한 곳에서 값을 필요로 하지 않는 경우에 반환형이 없는 함수를 작성한다.
예) 1부터 n까지의 합을 더하는 기능을 하는 함수
int sum(int n) {
int result = 0;
for (int i = 1;i <= n;i++)
result += i;
return result;
}
함수의 헤더 부분은 int sum(int n) 이다.
int는 반환값의 자료형이고, sum은 함수의 이름, (int n)은 매개변수를 의미한다.
매개변수는 함수에 따라 존재하지 않을 수도 있고, 한 개, 혹은 두 개 이상일 수도 있다.
매개변수의 자료형과 변수명을 각각 써주어야 한다.
헤더 부분 이후, 중괄호 {} 안의 내용을 함수의 몸체, 바디라고 한다.
함수가 수행하는 특정한 기능의 내용을 작성하는 부분이다.
해당 sum() 함수는 1부터 n까지의 합을 결과값으로 반환해야 하기 때문에 정수형 변수 result를 사용했다.
반복문이 끝난 후 얻는 result 변수의 최종적인 값이 반환값으로 사용된다.
함수의 호출(call)
호출 방법: 함수의 이름()
특정한 기능을 수행하는 함수를 실행하거나, 해당 함수를 실행하여 어떤 결과값을 얻기 위해서는
이 함수를 호출해야 한다. (=실행하게 이름을 불러주어야 한다.)
함수를 호출하는 방법은 함수의 이름과 괄호를 써주면 된다.
반환값과 매개 변수 값이 존재하는 경우에는 호출할 때 자료형이 모두 일치해야 한다.
main()함수에서 n을 입력받아, 위의 sum()함수를 호출하여 결과 값을 얻어보자.
int main(void) {
int n;
printf("정수 입력: ");
scanf_s("%d", &n);
printf("결과값은 %d \n", sum(n));
/*
int result=sum(n);
printf("결과값은 %d \n", result);
*/
return 0;
}
함수를 호출하는 곳에서 실제로 입력받아 sum()함수로 넘겨주는 변수 n의 값을 '인수' 또는 '인자'라고 한다.
인수는 함수의 기능에 따라 존재할 수도, 존재하지 않을 수도 있다.
위의 방법은 함수를 호출하여 얻는 정수값을 바로 출력하였지만,
/**/ 주석 내부와 같은 방법으로, 변수를 따로 설정하여 함수의 결과값을 저장하는 방법도 존재한다.
함수의 선언(declaration)
main() 함수 이후에 사용할 함수들을 미리 컴파일러에게 정보를 제공하는 것을
함수의 원형(function prototype)이라고 한다.
함수를 선언하는 것은 매우 간단하다.
함수의 반환형, 함수명, 매개변수 목록을 작성하면 된다.
이 때, 매개변수의 이름은 필수가 아니지만, 자료형은 필수적으로 포함이 되어 있어야 한다.
#include <stdio.h>
int sum(int);
int main(void) {
int n;
printf("정수 입력: ");
scanf_s("%d", &n);
printf("결과값: %d\n", sum(n));
return 0;
}
int sum(int n) {
int result = 0;
for (int i = 1;i <= n;i++)
result += i;
return result;
}
'# Language & Tools > C' 카테고리의 다른 글
[C언어] 파일 입출력 - FILE 파일 포인터, 파일 관련 함수 (0) | 2021.01.28 |
---|---|
C언어 Express 15장 파일 입출력 Programming 심화 문제 추가 (2) | 2021.01.26 |
C언어 Express 7장 Programming 심화 문제 추가 (0) | 2021.01.22 |
C언어 Express 6장 Programming 심화 문제 추가 (0) | 2021.01.22 |
[C언어] 구구단 출력 프로그램 (0) | 2021.01.22 |