정처기 감자정처기 감자
공통 기초함수

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

함수의 기초

코딩C언어JavaPython
읽는데 19분 소요
처음 쓰인 날: 2026-03-18
마지막 수정일: 2026-04-17
조회수: —
선수학습(1개)
  • 변수 선언 방법

요약

함수의 정의, 선언, 호출 방법을 알아봅니다. 매개변수와 반환값, void 함수 등 정보처리기사 실기 코딩 문제의 기초가 되는 함수 개념을 C언어, Java, Python으로 비교하며 정리합니다.

함수 핵심 정리

개념설명예시
함수 정의함수의 동작을 작성하는 것int gamja(int a, int b) { return a + b; }
함수 호출정의된 함수를 실행하는 것gamja(3, 5)
매개변수함수가 외부에서 받는 값int a, int b
반환값함수가 호출한 곳에 돌려주는 값return a + b;
void 함수반환값이 없는 함수void print() { ... }

함수 핵심 정리

개념설명예시
메서드 정의메서드의 동작을 작성하는 것static int gamja(int a, int b) { return a + b; }
메서드 호출정의된 메서드를 실행하는 것gamja(3, 5)
매개변수메서드가 외부에서 받는 값int a, int b
반환값메서드가 호출한 곳에 돌려주는 값return a + b;
void 메서드반환값이 없는 메서드static void print() { ... }

함수 핵심 정리

개념설명예시
함수 정의def 키워드로 함수를 정의def gamja(a, b): return a + b
함수 호출정의된 함수를 실행하는 것gamja(3, 5)
매개변수함수가 외부에서 받는 값a, b
반환값함수가 호출한 곳에 돌려주는 값return a + b
반환값 없는 함수return이 없으면 None 반환def greet(): print("hi")

함수란?

함수는 특정 작업을 수행하는 코드 묶음입니다. 한 번 정의해두면 필요할 때마다 호출하여 사용할 수 있습니다.

C언어의 함수는 크게 두 종류입니다.

종류설명예시
main 함수프로그램의 시작점. 모든 C 프로그램에 반드시 하나 있어야 함int main() { ... }
사용자 정의 함수개발자가 직접 만든 함수. main에서 호출하여 사용int gamja(int a, int b) { ... }
c
코드 하이라이팅 중…

프로그램은 항상 main 함수에서 시작합니다. main 안에서 사용자 정의 함수를 호출하는 구조입니다.

gamja(3, 5)를 호출하면 main과 gamja 두 함수의 메모리 공간이 동시에 존재합니다.

함수 호출 시 메모리 상태

gamja 함수가 return a + b;로 8을 반환하면, gamja의 메모리 공간은 사라지고 반환값이 result에 저장됩니다.

함수 반환 후 메모리 상태
사용자 정의 함수가 main보다 위에 있는 이유
C언어는 코드를 위에서 아래로 읽습니다. main에서 gamja를 호출하려면 컴파일러가 gamja를 이미 알고 있어야 합니다. 그래서 사용자 정의 함수를 main보다 위에 작성합니다. 아래에 두고 싶다면 함수 프로토타입을 사용합니다.

Java에서는 함수를 메서드(Method) 라고 부릅니다. 모든 메서드는 클래스 안에 작성해야 합니다.

종류설명예시
main 메서드프로그램의 시작점public static void main(String[] args) { ... }
사용자 정의 메서드개발자가 직접 만든 메서드static int gamja(int a, int b) { ... }
java
코드 하이라이팅 중…

프로그램은 항상 main 메서드에서 시작합니다. main 안에서 다른 메서드를 호출하는 구조입니다.

Java에서 메서드에 static이 붙는 이유
main 메서드가 static이므로, main에서 직접 호출하는 메서드도 static이어야 합니다. static은 객체를 만들지 않고도 사용할 수 있다는 뜻입니다.

Python에서는 def 키워드로 함수를 정의합니다. C/Java와 달리 main 함수가 필수가 아닙니다. 코드는 위에서 아래로 실행됩니다.

python
코드 하이라이팅 중…

함수를 정의한 뒤 아래에서 호출하면 됩니다.

Python은 함수를 호출 전에 정의해야 합니다
Python은 코드를 위에서 아래로 실행합니다. 함수를 호출하는 코드보다 함수 정의가 위에 있어야 합니다. 아래에 있으면 NameError가 발생합니다.
언어 공통: 함수의 기본 구조는 동일합니다
C, Java, Python 모두 '함수 이름 + 매개변수 → 본문 실행 → 반환값'이라는 동일한 흐름을 따릅니다. 차이는 문법뿐이므로, 하나를 이해하면 나머지도 쉽게 읽을 수 있습니다.

함수 정의

함수를 정의할 때는 함수명, 매개변수, 함수 본문, 반환값을 작성합니다.

text
코드 하이라이팅 중…
c
코드 하이라이팅 중…
구성 요소의미예시에서
반환형함수가 돌려주는 값의 자료형int
함수명함수의 이름gamja
매개변수함수가 받는 입력값int a, int b
함수 본문함수가 수행하는 코드return a + b;

반환형은 어떻게 정하나?

return으로 돌려주는 값의 자료형을 함수명 앞에 적습니다.

위 예시에서 a + b는 int + int이므로 결과도 정수(int)입니다. 정수를 반환하니까 함수명 앞에 반환형을 int라고 명시합니다.

c
코드 하이라이팅 중…

avg 함수에서 2.0은 실수(double)입니다. 정수와 실수를 함께 연산하면 결과가 실수가 되므로 반환형을 double로 지정합니다. 자세한 내용은 정수 나눗셈 vs 실수 나눗셈을 참고하세요. printf가 처음이라면 printf() - 서식 지정 출력을 먼저 읽어보세요.

반환형의미return문
int정수를 반환return 정수값;
double실수를 반환return 실수값;
char문자를 반환return 문자;
void반환값 없음return; 또는 생략
text
코드 하이라이팅 중…
java
코드 하이라이팅 중…
구성 요소의미예시에서
반환형메서드가 돌려주는 값의 자료형int
메서드명메서드의 이름gamja
매개변수메서드가 받는 입력값int a, int b
메서드 본문메서드가 수행하는 코드return a + b;

반환형은 어떻게 정하나?

return으로 돌려주는 값의 자료형을 메서드명 앞에 적습니다. C언어와 동일한 방식입니다.

java
코드 하이라이팅 중…
반환형의미return문
int정수를 반환return 정수값;
double실수를 반환return 실수값;
char문자를 반환return 문자;
String문자열을 반환return 문자열;
void반환값 없음return; 또는 생략
text
코드 하이라이팅 중…
python
코드 하이라이팅 중…
구성 요소의미예시에서
def함수를 정의하는 키워드def
함수명함수의 이름gamja
매개변수함수가 받는 입력값a, b
함수 본문함수가 수행하는 코드 (들여쓰기로 구분)return a + b

Python은 반환형을 적지 않습니다

C/Java와 달리 Python은 함수명 앞에 반환형을 적지 않습니다. 어떤 자료형이든 자유롭게 반환할 수 있습니다.

python
코드 하이라이팅 중…
언어별 함수 정의 문법 비교
C/Java는 반환형을 함수명 앞에 명시합니다(int, void 등). Python은 반환형을 적지 않고 def 키워드로 시작합니다. 또한 C/Java는 중괄호로 본문을 감싸고, Python은 콜론(:)과 들여쓰기로 본문을 구분합니다.

함수 호출

함수를 호출하면 프로그램의 실행 흐름이 해당 함수로 이동합니다. 함수가 끝나면 호출한 위치로 돌아옵니다.

c
코드 하이라이팅 중…

실행 흐름

함수 호출 실행 흐름
java
코드 하이라이팅 중…

실행 흐름

text
코드 하이라이팅 중…
python
코드 하이라이팅 중…

실행 흐름

text
코드 하이라이팅 중…
인자와 매개변수는 다릅니다
함수를 호출할 때 넘기는 값(3, 5)을 인자(argument)라고 하고, 함수가 받는 변수(a, b)를 매개변수(parameter)라고 합니다. 시험에서는 이 구분을 엄격히 따지지 않지만, 코드를 읽을 때 구분하면 이해가 쉬워집니다.

매개변수와 반환값

매개변수 (Parameter)

매개변수는 함수가 외부에서 값을 받기 위한 변수입니다. 함수를 호출할 때 전달한 인자 값이 매개변수에 복사됩니다.

c
코드 하이라이팅 중…

multiply(4, 7)을 호출하면 인자 4와 7이 매개변수 x, y에 복사됩니다.

multiply(4, 7) 호출 시 메모리 상태
java
코드 하이라이팅 중…
python
코드 하이라이팅 중…
인자가 '복사'된다는 점이 중요합니다
매개변수에는 인자의 값이 복사됩니다. 따라서 함수 안에서 매개변수를 바꿔도 원본 변수는 변하지 않습니다. 이것이 Call by Value(값에 의한 호출)이며, 출제된 바 있습니다. 자세한 내용은 매개변수 전달 방식 (Call by Value) 페이지를 참고하세요.

매개변수가 없는 함수도 있습니다.

c
코드 하이라이팅 중…
java
코드 하이라이팅 중…
python
코드 하이라이팅 중…

반환값 (Return Value)

return문은 함수의 실행 결과를 호출한 곳에 돌려줍니다. return이 실행되면 함수는 즉시 종료됩니다.

c
코드 하이라이팅 중…

반환된 값은 호출한 자리에 그대로 들어갑니다.

c
코드 하이라이팅 중…
java
코드 하이라이팅 중…

반환된 값은 호출한 자리에 그대로 들어갑니다.

java
코드 하이라이팅 중…
python
코드 하이라이팅 중…

반환된 값은 호출한 자리에 그대로 들어갑니다.

python
코드 하이라이팅 중…

return 이후의 코드는 실행되지 않습니다

return이 실행되면 함수가 즉시 종료되므로, 그 아래의 코드는 무시됩니다.

c
코드 하이라이팅 중…

Java는 return 이후 코드가 있으면 컴파일 에러

return 다음 줄에 코드를 쓰면, Java는 도달할 수 없는 코드(unreachable code)로 보고 컴파일 자체를 거부합니다.

java
코드 하이라이팅 중…
C/Python과 다른 점
C와 Python은 return 이후에 코드가 있어도 경고만 내고 그 코드를 무시한 채 실행됩니다. 하지만 Java는 도달할 수 없는 코드를 컴파일 에러로 처리해서 프로그램이 아예 실행되지 않습니다.

return 이후의 코드는 실행되지 않습니다

return이 실행되면 함수가 즉시 종료되므로, 그 아래의 코드는 무시됩니다.

python
코드 하이라이팅 중…

return은 함수 전체를 끝냅니다. 그래서 if문처럼 블록 안에서 return을 만나도 그 즉시 함수가 종료되고, 블록 밖에 있는 코드까지 실행되지 않습니다.


반환값이 없는 함수

void 함수는 반환값이 없는 함수입니다. 값을 돌려주지 않고, 출력이나 값 변경 같은 동작만 수행합니다.

c
코드 하이라이팅 중…
반환형return문함수 호출 결과
int, char 등return 값; 필요값을 반환
voidreturn; 또는 생략값 없음

void 함수에서 return;을 쓰면 함수를 중간에 종료할 수 있습니다.

c
코드 하이라이팅 중…

void 메서드는 반환값이 없는 메서드입니다. 값을 돌려주지 않고, 출력이나 값 변경 같은 동작만 수행합니다.

java
코드 하이라이팅 중…
반환형return문메서드 호출 결과
int, String 등return 값; 필요값을 반환
voidreturn; 또는 생략값 없음

void 메서드에서 return;을 쓰면 메서드를 중간에 종료할 수 있습니다.

java
코드 하이라이팅 중…

Python에서는 return이 없거나 return만 단독으로 쓰면 None을 반환합니다. C/Java의 void에 해당합니다.

python
코드 하이라이팅 중…
상황return문반환값
값을 반환return 값해당 값
return만 단독 사용returnNone
return 없음(생략)None

return만 쓰면 함수를 중간에 종료할 수 있습니다.

python
코드 하이라이팅 중…
언어별 '반환값 없음' 표현 비교
C/Java는 반환형에 void를 명시합니다. Python은 void 키워드가 없고, return이 없으면 자동으로 None을 반환합니다. None은 '값이 없음'을 나타내는 Python의 특별한 값입니다.

함수 풀이 순서

시험에서 함수가 포함된 코드를 분석할 때는 다음 순서를 따릅니다.

  1. main 함수부터 읽기: 프로그램은 항상 main에서 시작합니다
  2. 함수 호출을 만나면 이동: 호출된 함수의 정의로 이동합니다
  3. 인자값을 매개변수에 대입: 실제 전달된 값을 매개변수에 넣고 분석합니다
  4. return값을 호출 위치에 대입: 반환값을 호출한 자리에 넣고 계속 읽습니다

예제

c
코드 하이라이팅 중…

풀이 과정:

  1. main 시작 → a = 3
  2. square(a) 호출 → square(3) → 매개변수 n = 3
  3. n * n = 3 * 3 = 9 반환
  4. b = 9
  5. a + b = 3 + 9 = 12

출력: 12

  1. main 메서드부터 읽기: 프로그램은 항상 main에서 시작합니다
  2. 메서드 호출을 만나면 이동: 호출된 메서드의 정의로 이동합니다
  3. 인자값을 매개변수에 대입: 실제 전달된 값을 매개변수에 넣고 분석합니다
  4. return값을 호출 위치에 대입: 반환값을 호출한 자리에 넣고 계속 읽습니다

예제

java
코드 하이라이팅 중…

풀이 과정:

  1. main 시작 → a = 3
  2. square(a) 호출 → square(3) → 매개변수 n = 3
  3. n * n = 3 * 3 = 9 반환
  4. b = 9
  5. a + b = 3 + 9 = 12

출력: 12

  1. 맨 아래 호출 코드부터 읽기: 파이썬은 함수 정의가 코드 위쪽에 있고, 실제 실행되는 호출 코드는 아래쪽에 있습니다. 함수 정의는 건너뛰고 맨 아래 호출 코드부터 봅니다
  2. 함수 호출을 만나면 이동: 호출된 함수의 정의로 이동합니다
  3. 인자값을 매개변수에 대입: 실제 전달된 값을 매개변수에 넣고 분석합니다
  4. return값을 호출 위치에 대입: 반환값을 호출한 자리에 넣고 계속 읽습니다

예제

python
코드 하이라이팅 중…

풀이 과정:

  1. a = 3
  2. square(a) 호출 → square(3) → 매개변수 n = 3
  3. n * n = 3 * 3 = 9 반환
  4. b = 9
  5. a + b = 3 + 9 = 12

출력: 12


기본 매개변수 (Default Parameter)

매개변수에 기본값을 지정하면, 호출 시 해당 인자를 생략할 수 있습니다.

python
코드 하이라이팅 중…
호출 방식num1num2출력
func(3)32 (기본값)5
func(3, 10)31013
기본 매개변수는 반드시 오른쪽에 위치해야 합니다
def func(num1=2, num2)처럼 기본값이 있는 매개변수 뒤에 기본값 없는 매개변수가 오면 오류가 발생합니다. 기본 매개변수는 항상 일반 매개변수의 오른쪽에 배치해야 합니다.

다음 학습

함수의 기초를 익혔다면, 다음 개념들을 학습할 수 있습니다.

  • 함수 프로토타입 - 함수를 미리 선언하는 방법
  • 매개변수 전달 방식 (Call by Value) - 함수에 값을 전달할 때 원본이 바뀌는지 여부
  • 재귀함수 - 함수가 자기 자신을 호출하는 구조
  • static 키워드 - 함수 호출 간에 값이 유지되는 변수
  • 변수의 유효 범위 - 변수가 어디서 접근 가능한지
  • 매개변수 전달 방식 (Call by Value) - 메서드에 값을 전달할 때 원본이 바뀌는지 여부
  • 오버로딩 - 같은 이름의 메서드를 매개변수를 다르게 하여 여러 개 정의
  • static 키워드 - static 키워드의 의미와 활용
  • 변수의 유효 범위 - 변수가 어디서 접근 가능한지
  • 람다 표현식 (Lambda Expression) - lambda, map 함수
  • 재귀 함수 - 함수가 자기 자신을 호출하는 구조
  • 매개변수 전달 방식 (Call by Value) - 함수에 값을 전달할 때 원본이 바뀌는지 여부
  • 변수의 유효 범위 - 변수가 어디서 접근 가능한지

정보처리기사 실기 기출 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(15개)
  • C언어 함수 프로토타입
  • C언어 재귀함수 (Recursion)
  • 매개변수 전달 방식 (Call by Value)
  • C언어 static 변수 - 값이 유지되는 변수
  • 변수 스코프 - 지역 변수와 전역 변수의 탐색 순서
  • Java 메서드 오버로딩
  • Java static 키워드 - 클래스 메서드와 클래스 변수
  • 람다 표현식 (Lambda Expression)
  • C언어 헤더 파일과 #include
  • C언어 사용자 정의 함수 기초
  • Python 기본 제공 함수 — range, len, type, sum, sorted, map, enumerate
  • Python 클래스와 __init__
  • Python 제너레이터 표현식
  • 백슬래시 줄 연속 (\)
  • Python 재귀 함수 (Recursion)
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999