우리의 IT
C언어 - 함수 본문
✅ C 언어 - 함수 (Function)
✔️ 함수(Function) → 특정 작업을 수행하는 코드 블록
✔️ 코드의 재사용성 증가, 가독성 향상, 유지보수 용이
🔹 1. 함수의 기본 구조
반환형 함수이름(매개변수) {
실행할 코드;
return 반환값; // (반환형이 void면 생략 가능)
}
📌 예제
#include <stdio.h>
// 함수 선언
int add(int a, int b);
int main() {
int result = add(3, 5); // 함수 호출
printf("결과: %d\n", result);
return 0;
}
// 함수 정의
int add(int a, int b) {
return a + b;
}
✅ 출력
결과: 8
🔹 2. 함수의 종류
함수 유형 반환값 매개변수
| 매개변수 X, 반환값 X | X | X |
| 매개변수 X, 반환값 O | O | X |
| 매개변수 O, 반환값 X | X | O |
| 매개변수 O, 반환값 O | O | O |
📌 (1) 매개변수 X, 반환값 X
#include <stdio.h>
void hello() { // 반환형 void
printf("Hello, C!\n");
}
int main() {
hello(); // 함수 호출
return 0;
}
✅ 출력
Hello, C!
📌 (2) 매개변수 X, 반환값 O
#include <stdio.h>
int getNumber() {
return 42; // 42 반환
}
int main() {
int num = getNumber();
printf("숫자: %d\n", num);
return 0;
}
✅ 출력
숫자: 42
📌 (3) 매개변수 O, 반환값 X
#include <stdio.h>
void printNumber(int n) {
printf("입력한 숫자: %d\n", n);
}
int main() {
printNumber(10);
return 0;
}
✅ 출력
입력한 숫자: 10
📌 (4) 매개변수 O, 반환값 O
#include <stdio.h>
int multiply(int a, int b) {
return a * b;
}
int main() {
int result = multiply(4, 5);
printf("곱셈 결과: %d\n", result);
return 0;
}
✅ 출력
곱셈 결과: 20
🔹 3. 함수와 배열
📌 배열을 매개변수로 전달 (배열은 포인터로 전달됨)
#include <stdio.h>
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
printArray(numbers, 5);
return 0;
}
✅ 출력
1 2 3 4 5
🔹 4. 함수와 문자열
📌 문자열을 매개변수로 전달
#include <stdio.h>
void printMessage(char str[]) {
printf("메시지: %s\n", str);
}
int main() {
char message[] = "Hello, World!";
printMessage(message);
return 0;
}
✅ 출력
메시지: Hello, World!
🔹 5. 함수와 포인터 (Call by Value vs. Call by Reference)
📌 Call by Value (값에 의한 호출) → 원본 변경 X
#include <stdio.h>
void changeValue(int num) {
num = 100;
}
int main() {
int x = 10;
changeValue(x);
printf("x: %d\n", x); // 값 변경 X
return 0;
}
✅ 출력
x: 10
📌 Call by Reference (참조에 의한 호출) → 원본 변경 O
#include <stdio.h>
void changeValue(int *num) {
*num = 100; // 포인터를 통해 값 변경
}
int main() {
int x = 10;
changeValue(&x);
printf("x: %d\n", x); // 값 변경 O
return 0;
}
✅ 출력
x: 100
✔️ *num을 사용하여 포인터가 가리키는 값을 변경
🔹 6. 재귀 함수 (Recursion)
📌 함수가 자기 자신을 호출
#include <stdio.h>
int factorial(int n) {
if (n == 0) return 1; // 종료 조건
return n * factorial(n - 1);
}
int main() {
printf("5! = %d\n", factorial(5));
return 0;
}
✅ 출력
5! = 120
✔️ 종료 조건이 없으면 무한 루프 발생
🚀 정리
✅ 1. 함수의 기본 구조
✔️ 반환형, 함수 이름, 매개변수, 실행 코드, return 문으로 구성
✅ 2. 함수의 유형
✔️ 매개변수 X, 반환값 X → void 함수이름()
✔️ 매개변수 X, 반환값 O → int 함수이름()
✔️ 매개변수 O, 반환값 X → void 함수이름(int a)
✔️ 매개변수 O, 반환값 O → int 함수이름(int a, int b)
✅ 3. 함수와 배열
✔️ 배열을 함수의 매개변수로 전달 가능
✔️ 배열은 포인터로 전달되므로 원본 값이 변경될 수 있음
✅ 4. 함수와 문자열
✔️ 문자열은 문자 배열 (char[]) 형태로 전달됨
✅ 5. 함수와 포인터
✔️ Call by Value → 원본 변경 X
✔️ Call by Reference (포인터 사용) → 원본 변경 O
✅ 6. 재귀 함수
✔️ 자기 자신을 호출하는 함수
✔️ 종료 조건을 명확히 설정해야 함!
✅ C 언어에서 함수를 잘 활용하면 코드의 유지보수성과 재사용성을 높일 수 있습니다! 🚀
'정보처리기사' 카테고리의 다른 글
| C언어 - 유틸리티 함수 (0) | 2025.03.27 |
|---|---|
| C언어 - 표준함수 (0) | 2025.03.27 |
| C 언어 - 1차원 배열, 2차원 배열, 문자열 동시 사용 (0) | 2025.03.26 |
| C 언어 - 1차원 배열 & 2차원 배열 (0) | 2025.03.26 |
| C언어 - 반복문 (0) | 2025.03.26 |