C Programming

[C언어] 함수에 대한 나만의 정리

All리얼 개발자 2025. 3. 29. 08:50
목차
1. 함수를 왜 사용할까?
2. 함수의 4가지 유형 소개
3. 함수의 선언&정의
4. 지역변수와 전역변수

 

 

 

1. 함수를 왜 사용할까?

다수의 작은 함수를 만들고 그 함수들을 이용하여 큰 프로그램을 구현하는 데 사용하기 위함이다.

 

참고로 우리가 즐겨 사용하는 int main(void)도 마찬가지로 함수이다!

 

int – 반환형태, 즉 출력을 나타낸다

main – 함수의 이름을 나타낸다.

(void) – 전달받을 인자 없음.

중괄호{ } – 함수의 내부 영역을 나타낸다.

 

기본적으로 4가지 유형의 C언어 함수가 존재한다.

전달인자 & 반환값 둘 다 존재 O

int 함수이름(int a)

 

전달인자 존재 O, 반환값 존재 X

void 함수이름(int a)

 

전달인자 존재 X, 반환값 존재 O

int 함수이름(void)

 

전달인자 & 반환값 둘 다 존재 X

void 함수이름(void)

 

 

2. 함수의 유형 4가지 소개

전달인자 & 반환값 모두 존재하는 경우

 

Number 함수:

  • 함수 이름은 Number로 정의되었다
  • 이 함수는 두 개의 정수형 매개변수(int a, int b)를 전달받는다
  • 함수 내부에서는 두 매개변수의 값을 더한 후(a + b), 그 결과값을 반환(return)한다.
  • 즉, Number 함수는 두 개의 정수를 받아 덧셈 결과를 반환하는 역할을 한다.

 

main 함수:

main 함수 내에서 Number 함수 호출 시, 흐름은 Number 함수 내부로 이동하고, 결과값이 반환된 후 다시 main 함수로 돌아와 결과를 출력하게 된다.

 

 

전달인자는 있지만 반환값이 없는(void) 경우

 

반환값이 없는 Number 함수:

  • 반환값은 없기 때문에 함수 앞에 void를 쓴다.
  • 함수의 매개변수로 전달받은 int형 정수를 입력받아서 출력만 하고 종료한다.

 

main 함수:

  • 입력받은 두 정수를 더해서 result라는 변수에 저장한다.
  • result 값을 Number 함수로 전달하여 호출한다.
  • Number(result) 함수가 호출되면, 프로그램의 흐름은 잠시 Number 함수로 넘어간다.
  • Number 함수는 전달받은 값을 출력만 하고, 반환값 없이 즉시 종료된다.

 

 

반환형은 있지만 전달인자가 없는(void) 경우

반환형이 존재하는 함수의 경우, 반드시 return 반환을 해줘야 한다!

  • main 함수 내부에서 Number( ); 함수 호출 시 내부의 결과값이 그대로 출력됨.
  • 즉, num1 = Number( ) -> 반환된 함수의 결과값을 num1에게 대입연산을 통해 들어감.

 

 

반환형 인자전달 둘 다 존재하지 않는 경우

  • 말 그대로, main함수에서 함수 호출 시 함수의 내용만 호출함.

 

 

3. 함수 선언&정의

 

컴파일은 기본적으로 위에서 아래로 진행되기 때문에 함수의 배치순서가 중요하다.

 

함수의 선언:

반환형 함수이름 (인자전달);의 형태

세미콜론까지 넣어서 기본적인 함수에 대한 정보를 제공하는 것을 컴파일러에게 인식시킨다.

 

함수 정의:

앞에서 선언한 함수의 기능적인 부분을 구현한다(세미콜론 X)

 

= 정리하자면 1. 함수 선언 2. main 함수 3. 함수 정의 순으로 코드의 흐름이 흘러간다.

 

 

4. 전역변수와 지역변수

지역변수란?

정의한 함수 혹은 키워드의 중괄호 내에 선언된 변수.

 

Number 함수의 중괄호, main 함수의 중괄호, if문의 중괄호 등 중괄호 내부에 선언된 변수들이 전부 지역변수이다.

지역변수의 특징으로는 접근범위유지기간이다.

  • 한 지역(함수)내에 동일한 이름의 변수 사용 불가
  • 지역변수 선언 이후로부터 함수 종료까지만 사용가능
  • 중괄호를 빠져나가는 순간 지역변수는 소멸된다. 만약 for문이나 다시 호출되면 새롭게 할당된다.
  • 지역변수, 매개변수 모두 동일하게 새롭게 할당되고 소멸된다!

 

 

전역변수란?

코드 전체의 영역에서 유효한 변수. 즉, 함수에 종속되지 않고 밖에서 활동하는 변수라고 쉽게 이해하면 된다.

 

코드 동작원리

main함수가 호출되기 전에 이미 메모리 공간에 전역변수가 먼저 할당된다.

지역변수와 달리 main함수의 return 0;으로 프로그램이 종료되어야 전역변수도 소멸된다.

 

주의: 전역변수 선언 후에 정의한 함수의 중괄호 내부에 변수 선언하지 않으면 전역변수가 해당 함수의 변수로 할당이 된다(전역변수는 가능하면 사용하지 않는 것이 바람직하다)

 

'C Programming' 카테고리의 다른 글

[C언어] '1차원 배열(array)'의 이해  (0) 2025.05.16