안녕하세요.
이번에는 함수를 정리하겠습니다.
1. 함수
1) 의미
- 함수란 하나의 특정 작업을 수행하기 위한 독립적인 단위라고 할 수 있습니다.
- 반복적인 작업을 피하기 위한 목적으로 주로 사용됩니다.
2) 블랙박스(Black-Box)
- 블랙박스란 내부의 구조에는 관심이 없고, 동작에만 관심을 두는 관점을 말합니다.
- 함수는 내부의 구성은 작성자만이 알고, 사용자는 함수의 구조을 알 필요가 없습니다.
- 사용자는 함수를 블랙박스 관점에서 바라보기를 선호합니다.
- 한 예로 printf() 라는 출력함수를 우리가 사용할 때는 내부구조를 알 필요까지 없습니다.
3) 기본구조
반환형 함수이름(매개변수)
{
실행 코드
return 반환값;
}
int func(int num)
{
num++;
return num;
}
└ 함수는 기본적으로 반환형과 함수이름, 매개변수, 블록({~}) 으로 구성됩니다.
2. 지역변수
1) 의미
- 지역변수란 함수 내부에서만 선언되어 사용하는 변수입니다.
2) 특징
- 함수 내부인 블록({~}) 에서만 사용되므로, 다른 함수에서는 접근할 수 없고, 블록이 종료되는 경우 지역변수는 소멸됩니다.
- 매개변수(형식매개변수)는 함수의 가장 유명한 지역변수라고 할 수 있습니다.
3) 사용구조
int func(int num)
{
int num2 = 5;
return num % num2;
}
└ 해당 func 라는 함수에서 지역변수는 매개변수인 int num 과 블록 내 선언된 변수인 int num2 라고 할 수 있습니다.
4) 전역변수
- 전역변수란 함수 밖에서 선언된 변수를 의미합니다.
- 함수가 종료되어도 값이 소멸되지 않습니다.
#include <stdio.h>
int gValue = 100;
int func(int num)
{
int num2 = 5;
return num % num2;
}
int main()
{
int Temp;
Temp = func(gValue);
printf("%d", Temp);
return 0;
}
└ 여기서 gValue 는 func() 함수 밖에서 선언되었으므로 전역변수입니다.
└ func() 함수에서 gValue 라는 변수가 사용되었지만, func() 함수가 종료되어도 gValue 는 그대로 존재합니다.(프로그램 종료 시에 소멸됩니다.)
3. 매개변수(형식매개변수)
1) 의미
- 매개변수란 함수에 전달되는 입력값을 의미합니다.
- 매개변수는 함수 내부의 변수인 지역변수입니다.
2) 사용구조
int Add(int a, int b);
{
return a + b;
}
└ 여기서 매개변수는 int a, int b 가 됩니다.
└ 데이터형과 변수의 조합으로 사용됩니다.
3.1 실전달인자
1) 의미
- 실전달인자란 함수에 실제 전달하는 입력값을 의미합니다.
2) 사용구조
Add(5, 6);
└ 여기서 실전달인자는 5와 6이 됩니다.
└ 정의된 함수 Add() 를 호출하고, 매개변수의 데이터형에 맞게 정수를 전달합니다.
4. 함수의 데이터형과 반환값
1) 의미
- 함수의 데이터형이란 함수의 이름 앞에 선언된 데이터형의 종류를 말합니다.
- 함수의 반환이란 함수의 데이터형에 맞는 값을 반환하는 것을 말합니다.
2) 데이터형
double GetPi()
└ 데이터형은 GetPi() 라는 함수의 이름 앞에 붙습니다.
└ 이 함수의 데이터형은 double 입니다.
3) 반환값
double GetPi()
{
return 3.14;
}
└ 함수의 반환을 하기 위해서는 return 이라는 키워드를 사용합니다.
└ double 이라는 데이터형을 가진 GetPi 라는 함수는 부동소수점형인 3.14 를 반환합니다.
4) 데이터형과 반환이 없는 함수(void 함수)
- 반환이 없고, 일정 행동만 필요로 하는 함수가 있을 수 있습니다.
- 이 경우 데이터형 자리에 void 라는 키워드를 사용하고, 반환(return)을 하지 않으면 됩니다.
void PrintHello()
{
printf("Hello?\n");
}
4.1) return;
- 다만 return; 을 사용하면 그 자리에서 함수를 종료시킬 수 있습니다.
void printStr(int num);
{
if(num == 0)
{
printf("NotHello...\n");
return;
}
else
{
printf("HelloWorld!\n");
}
printf("HelloEveryone!!!\n");
}
└ 위 경우 num이 0 인 경우만 NotHello 를 출력하고 함수를 종료합니다.
└ 그 외의 경우에는 함수의 끝까지 진행합니다.
5. 함수의 정의, 선언, 호출
0. 전체 예제
#include <stdio.h>
int Add(int a, int b);
int main()
{
int num = Add(5, 6);
printf("%d", num);
return 0;
}
int Add(int a, int b)
{
return a + b;
}
1. 함수의 정의
1) 의미
- 함수의 정의란 위에서 했던 것처럼 데이터형, 함수이름, 매개변수, 블록, 반환값으로 이루어진 함수를 작성하는 경우를 말합니다.
- 함수의 실제 행동을 나타냅니다.
2) 예
int Add(int a, int b);
{
return a + b;
}
2. 함수의 선언(프로토타입)
1) 의미
- 함수의 선언이란 정의된 함수를 컴파일러에게 알리는 것을 말합니다.
2) 예
int Add(int a, int b);
└ 위 행위로 main() 이라는 함수에서 Add() 라는 함수의 존재를 알게 됩니다.
3. 함수의 호출
1) 의미
- 함수의 호출이란 정의와 선언이 된 함수를 불러 사용하는 것을 말합니다.
- 호출된 함수는 함수의 블록을 실행하고, 반환값으로 대체됩니다.
2) 예
int main()
{
int num = Add(5, 6);
printf("%d", num);
return 0;
}
└ 여기서 Add(5, 6) 이라는 부분이 함수의 호출이고, 반환값은 num 이라는 변수에 대입 연산자를 통해 대입됩니다.
'C > Study' 카테고리의 다른 글
| C언어 : 9. 배열과 문자열 (0) | 2026.05.26 |
|---|---|
| C언어 : 7. 분기 제어문 (0) | 2026.05.19 |
| C 언어 : 6. 루프 제어문 (0) | 2026.05.19 |
| C언어 : 5. 연산자 (0) | 2026.05.19 |
| C언어 : 4. 문자열과 입출력 (0) | 2026.05.18 |
