함수(Function)란 무엇인가?
함수는 특정 작업을 수행하도록 설계된 독립적인 코드 블록입니다. C 언어에서 함수를 사용하면 다음과 같은 장점이 있습니다.
재사용성 — 한 번 작성한 함수를 여러 곳에서 반복해서 호출할 수 있습니다.
프로그램 길이 단축 — 중복 코드를 제거하여 전체 프로그램의 크기를 줄일 수 있습니다.
오류 추적 용이 — 문제가 발생한 함수를 쉽게 찾아내고 격리할 수 있습니다.
모듈화 프로그래밍 지원 — 상위 분해(top-down) 방식의 체계적인 프로그래밍에 적합합니다.
기본 예제
다음은 C 언어에서 함수를 선언하고 호출하는 가장 기본적인 형태의 프로그램입니다.
#include<stdio.h>
/* 함수 원형 선언 */
myfunc();
main(){
myfunc();
}
/* 함수 정의 */
myfunc(){
printf("Hello \n");
}
반환값(Return Value)의 이해
계산을 수행하는 함수는 일반적으로 결과값을 반환할 것으로 기대하지만, 매개변수(인수)는 받을 수도 있고 받지 않을 수도 있습니다.
반환값의 자료형은 int, float, char 등 어떤 타입이든 가능합니다.
함수의 기본 반환 자료형은 정수(int)입니다.
값을 반환하는 함수 예제
두 수를 더한 결과를 반환하는 함수의 예제입니다.
int total (){
int a,b,c;
a=10;
b=20;
c=a+b;
return c; // c 값을 반환하여 결과를 출력
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
30
위 코드처럼 두 단계로 나누어 작성하는 대신,
c=a+b; return c;
다음과 같이 한 단계로 간결하게 표현할 수도 있습니다.
return a+b;
반환값 누락 시 주의사항
함수에서 값을 반환하는 것을 잊으면 대부분의 C 컴파일러는 경고(warning) 메시지를 출력합니다. 이 경고는 반드시 값을 반환해야 한다는 것을 알려주는 역할을 합니다. 경고는 프로그램 실행을 막지는 않지만, 에러(error)는 프로그램 실행 자체를 중단시키므로 주의해야 합니다.
main() 함수의 반환값
main() 함수 역시 하나의 함수이므로 반환값을 가질 수 있습니다.
int main(){
---
---
---
return 0;
}
정수형 함수의 기본 반환값은 0입니다.
main() 함수에 return 0 또는 다른 값을 명시하지 않아도 0이 자동으로 반환됩니다.
int 값을 반환하는 함수를 작성할 때는 함수 선언부(헤더)에 반환 자료형을 명확히 표기하는 것이 좋은 습관입니다.
함수에서 값 반환하기
함수는 return 문을 통해 하나의 값만 반환합니다. 반환과 관련된 핵심 동작 방식은 다음과 같습니다.
함수 내부에서 변수를 변경하더라도 그 변수는 해당 함수의 지역 변수(local variable)이므로, 이를 호출한 함수의 변수에는 아무런 영향을 주지 않습니다.
호출한 함수(calling function)는 피호출 함수가 반환한 값을 선택적으로 무시할 수 있습니다. 실제로 printf와 scanf의 반환값은 대부분의 경우 무시됩니다.
반환값은 더 복잡한 표현식의 일부로 사용되거나, 변수에 할당되어 활용될 수 있습니다.