함수의 기초

코딩C언어JavaPython
읽는데 19분 소요
처음 쓰여진 날: 2026-03-18
마지막 수정일: 2026-03-28
조회수: 0

요약

함수의 정의, 선언, 호출 방법을 알아봅니다. 매개변수와 반환값, 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에 저장됩니다.

함수 반환 후 메모리 상태

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

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

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

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

python
코드 하이라이팅 중...

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


함수 정의 쌩기초

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

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

반환형은 어떻게 정하나?

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

위 예시에서 a + bint + 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
코드 하이라이팅 중...

실행 흐름

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

실행 흐름

text
코드 하이라이팅 중...

매개변수와 반환값 쌩기초

매개변수 (Parameter)

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

c
코드 하이라이팅 중...

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

multiply(4, 7) 호출 시 메모리 상태
java
코드 하이라이팅 중...
python
코드 하이라이팅 중...

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

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

반환값 (Return Value)

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

c
코드 하이라이팅 중...

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

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

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

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

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

python
코드 하이라이팅 중...

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

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

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

if문 안에서도 마찬가지입니다. return이 실행되면 함수 자체가 종료되므로, return 아래 코드는 물론이고 if문 밖의 코드도 실행되지 않습니다.

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

func(5)를 호출하면 n > 0이 참이므로 if 블록에 진입합니다. n = 5 + 10 = 15가 되고, return 15로 함수가 즉시 종료됩니다. 그 아래 코드는 전부 무시됩니다.

해석n의 변화출력
return 아래도 실행된다고 착각5 → 15 → 115 → 11151115
정답: return에서 즉시 종료5 → 15 → return15

출력: 15


반환값이 없는 함수 쌩기초

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

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

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

c
코드 하이라이팅 중...

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

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

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

java
코드 하이라이팅 중...

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

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

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

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


다음 학습

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