7장 함수
7.1 함수의 작성과 사용
학습목표
- 함수 선언을 하면 함수를 만들지 않고도 함수의 형태를 미리 알릴 수 있다.
- 함수의 정의는 원하는 기능의 함수를 직접 만드는 것이다.
- 만든 함수를 사용할 때는 함수를 호출한다.
함수는 프로그램에서 선언, 정의, 호출의 3 가지 상태로 사용된다.
구분 | 예시 | 설명 |
선언 | int add (int a, int b); | 함수의 형태를 알린다. 함수 원형에 세미클론을 붙인다. |
정의 | int add (int a, int b) { return a + b; } |
함수를 만든다. 반환값의 형태, 이름, 매개변수를 표시하고, 블록 안에 기능을 구현한다. |
호출 | add (10, 20); | 함수를 사용한다. 함수에 필요한 값을 인수로 준다. |
※ 함수를 만들 때, 반드시! 매개변수와 반환형을 꼭 생각하자
- 매개변수 : 함수가 기능을 수행하는 데 필요한 데이터는 무엇인가?
- 반환형 : 함수가 수행된 후의 결과는 무엇인가?
7.1.1 함수 정의
int : 반환형, 함수가 기능을 수행한 후에 호출한 곳으로 돌려줄 값의 자료형을 적는다.
add : 함수명, 변수를 만드는 규칙에 따라, 기능을 충분히 예상할 수 있게끔 작성한다.
(int x, int y) : 매개변수, 함수가 처리할 데이터를 저장하는 변수이다.
주의할 점(?) : 함수 안에 사용하는 변수명은 다른 함수의 변수명과 같을 수 있다!
컴파일러는 변수명의 사용 범위를 선언한 블록 내부로 제한한다. 따라서, 둘 이상의 함수에서 같은 이름의 변수를 선언해도 중복 에러가 발생하지 않는다.
7.1.2 함수 호출과 반환
함수는 얼마든지 만들 수 있지만, 자동으로 실행 XXX → 호출을 해주어야 한다.
ex) result = add(a, b);
a, b 와 같은 값은 함수에 필요한 인수로, 인수는 상수나 변수를 쓸 수 있고 수식을 사용하면 수식의 결과값이 인수로 쓰인다. 인수는 호출된 함수의 매개변수에 복사되어 사용된다.
호출된 함수가 실행을 끝내고 값을 반환할 때 return문을 사용한다.
이것은 무슨 말이냐? 코드를 보면, add 함수는 x와 y를 더하여 temp에 저장한 뒤 함수의 실행을 끝내고 호출한 곳으로 돌아가기 위해 return문을 사용한다. 이때 temp의 값을 호출한 곳으로 반환한다. 이후 main함수는 반환된 값을 대입 연산으로 result에 저장하고 잠시 중단했던 함수의 나머지 부분을 실행한다.
어렵게 다가온다면 이거 하나만 기억하자.
함수는 값으로도 사용될 수 있다.
7.1.3 함수 선언
함수 선언은 컴파일러가 새로 만든 함수를 인식할 수 있도록 알리는 역할을 한다.
함수의 선언은 함수 원형에 세미클론(;)을 붙인다.
Q 함수의 정의가 있는데 왜 선언이 필요할까?
- 함수 선언에서 반환값의 형태를 확인한다.
컴파일러는 함수를 호출한 자리에 반환값과 같은 형태의 저장 공간을 준비한다. 즉, 정수를 반환하면 호출한 자리에 int형 공간을 확보하고 실수를 반환하면 double형 공간을 확보한다. 따라서 함수를 호출하기 전에 선언을 통해 반환형을 미리 컴파일러에게 알릴 필요가 있다.
- 함수의 호출형식에 문제가 없는지 검사한다.
함수 선언문에는 매개변수의 개수와 형태에 대한 정보가 있으므로 호출할 때 정확한 값을 주는지 검사할 수 있다.
예를 들어 add 함수가 필요한 값이 정수 2개인데 실수를 인수로 주고 호출하면 컴파일 단계에서 확인하고 문제를 경고 메시지로 알려준다.
TIP : 함수를 정의하거나 선언하지 않고 호출하면 컴파일러는 반환형을 int로 가정한다.
'C언어 공부 > 개념 공부' 카테고리의 다른 글
2024.01. C언어 <배열 (2)> (0) | 2024.01.13 |
---|---|
2024.01. <배열 (1)> (0) | 2024.01.12 |
2024.01.08 함수 응용 (0) | 2024.01.12 |
2024.01.08 C언어 학원 필기 요약본 <함수 (3)> (0) | 2024.01.12 |
2024.01.08 C언어 <함수 (2)> (0) | 2024.01.12 |