null
vuild_
Nodes
Flows
Hubs
Login
MENU
Notifications
Login
⌂
c-lang-beginner
Structure
intro
•
C언어란?
•
C언어의 역사
•
개발 환경 설치
basics
•
변수 (Variables)
•
자료형 (Data Types)
•
연산자 (Operators)
io
•
printf — 출력 함수
•
scanf — 입력 함수
control-flow
•
if-else 조건문
•
switch 문
•
삼항 연산자 (Ternary Operator)
loops
•
for 반복문
•
while 반복문
•
do-while 반복문
functions
•
함수 정의와 호출
•
매개변수와 반환값
•
재귀 함수 (Recursion)
arrays
•
1차원 배열
•
2차원 배열
strings
•
문자열 기초
•
문자열 함수
project
•
프로젝트: 사칙연산 계산기
Flow Structure
함수 정의와 호출
16 / 22
재귀 함수 (Recursion)
☆ Star
↗ Full
매개변수와 반환값
#c
#c-lang
#beginner
#functions
#params-return
@devpc
|
2026-03-29 13:24:27
|
GET /api/v1/flows/4/nodes/34?fv=1&nv=2
Context:
Flow v1
→
Node v2
0
Views
0
Calls
# 매개변수와 반환값 ## 매개변수 (Parameters) 함수가 **외부로부터 데이터를 받는 방법**입니다. ```c // 매개변수 // ↓ ↓ int add(int a, int b) { return a + b; } // 인수(argument) // ↓ ↓ add(3, 5); // a=3, b=5로 전달됨 ``` - **매개변수(parameter)**: 함수 정의에서 받는 변수 (`a`, `b`) - **인수(argument)**: 함수 호출 시 전달하는 실제 값 (`3`, `5`) --- ## 값 전달 (Call by Value) C언어는 기본적으로 **값의 복사본**을 전달합니다. 함수 내부에서 매개변수를 바꿔도 **원래 변수는 변경되지 않습니다.** ```c #include <stdio.h> void change(int x) { x = 999; // 복사본만 변경됨 printf("함수 내부: %d\n", x); // 999 } int main() { int a = 10; change(a); printf("main에서: %d\n", a); // 10 (변경되지 않음) return 0; } ``` ``` 함수 내부: 999 main에서: 10 ``` --- ## 반환값 (Return Value) 함수가 **계산 결과를 호출자에게 돌려주는** 방법입니다. ```c double celsius_to_fahrenheit(double c) { return c * 9.0 / 5.0 + 32; } int main() { double temp = celsius_to_fahrenheit(100.0); printf("100°C = %.1f°F\n", temp); // 212.0°F return 0; } ``` --- ## 다양한 반환 타입 ```c int get_count() { return 42; } double get_pi() { return 3.14159; } char get_grade() { return 'A'; } void print_msg() { printf("hi\n"); } // 반환값 없음 ``` --- ## 조기 반환 (Early Return) 조건에 따라 함수를 일찍 종료할 수 있습니다. ```c int divide(int a, int b) { if (b == 0) { printf("오류: 0으로 나눌 수 없습니다.\n"); return -1; // 조기 반환 } return a / b; } int main() { printf("%d\n", divide(10, 2)); // 5 printf("%d\n", divide(10, 0)); // 오류 메시지 + -1 return 0; } ``` --- ## void 함수와 return `void` 함수에서도 `return`으로 조기 종료할 수 있습니다 (값 없이). ```c void print_positive(int n) { if (n <= 0) return; // 양수가 아니면 즉시 종료 printf("양수: %d\n", n); } ``` --- ## 여러 값 처리 패턴 C는 직접 여러 값을 반환할 수 없습니다. 우회 방법들: ### 방법 1: 포인터로 여러 값 수정 ```c void minmax(int a, int b, int *min, int *max) { *min = (a < b) ? a : b; *max = (a > b) ? a : b; } int main() { int lo, hi; minmax(7, 3, &lo, &hi); printf("최솟값: %d, 최댓값: %d\n", lo, hi); // 3, 7 return 0; } ``` ### 방법 2: 구조체 반환 (나중에 배울 내용) --- ## 예제: 온도 변환기 ```c #include <stdio.h> double to_fahrenheit(double c) { return c * 9.0 / 5.0 + 32; } double to_celsius(double f) { return (f - 32) * 5.0 / 9.0; } double to_kelvin(double c) { return c + 273.15; } void print_conversions(double celsius) { printf("섭씨 : %.2f°C\n", celsius); printf("화씨 : %.2f°F\n", to_fahrenheit(celsius)); printf("켈빈 : %.2fK\n", to_kelvin(celsius)); } int main() { double temp; printf("섭씨 온도 입력: "); scanf("%lf", &temp); print_conversions(temp); return 0; } ``` ---
함수 정의와 호출
재귀 함수 (Recursion)
// COMMENTS
ON THIS PAGE
No content selected.