Q1. main 함수 안에 선언한 것과 매개변수에서 선언하는 것에서 왜 서로 다른가?
✓ int math(int x, int y) 의 의미
매개변수 int x와 int y는 이 함수가 호출될 때 값을 전달받기 위한 지역 변수이다.
이 x와 y는 main 함수의 x와 y와는 다른 변수이다. 이름이 같더라도 각각의 함수 안에서 독립적으로 동작함.
- main 함수의 x, y: 사용자가 입력한 값을 저장하는 main 함수의 변수
- math 함수의 x, y: main에서 넘겨준 값을 함수 내부에서 처리하기 위한 지역 변수
✓ math(int x, int y)에 새로운 매개변수가 필요한 이유
함수를 설계할 때, 값을 함수에 넘겨주기 위해 매개변수(parameter)가 필요하다.
이때 함수 내에서 사용할 이름(int x, int y)을 지정함.
main 함수의 x, y와는 다른 메모리 공간을 사용해서 더 안전하고 확실한 결과를 보장함.
03_Q&A 변수랑 매개변수의 차이에 대한 물음.zip
Q1. 변수와 매개변수의 차이는?변수(Variable)란?"데이터를 저장하는 상자""내가 내 주머니에 돈을 넣어두고 쓰는 것"(내가 직접 값을 넣고 저장하는 개념) ✔ 프로그램에서 값을 저장하는 공간✔
omarykoo.tistory.com
✓ math(x, y)에서 혼란스러운 이유
math 함수는 main 함수에서 호출되고, 호출할 때 main의 x, y 값을 전달
- 이때 전달된 값은 math(int x, int y)의 지역 변수로 복사
- math 내부에서 비교와 계산이 이루어지고 결과를 리턴(return)
larger = math(x, y);는 math 함수가 반환한 값을 larger에 저장함.
예를 들어 사용자가 10과 20을 입력하면:
A. 사용자 입력
- x = 10, y = 20
이렇게 두 값을 입력받음.
B. math(x, y) 호출
이제 math(x, y)를 실행
- math(10, 20)이 실행되면서 x = 10, y = 20이 함수로 전달.
- 함수 내부에서 if (10 > 20) 비교를 하게 됨.
C. 비교와 반환
- 10 > 20은 false, 그래서 else 부분이 실행
- return y; → return 20;
즉, math(10, 20)의 결과는 20
D. 결과 저장
- larger = 20; → 이제 larger에는 20이 저장
math(x, y)는 더 큰 값을 "계산해서 반환하는 함수"이기 때문에,
larger = math(x, y);는 math 함수의 반환값을 larger에 저장하는 코드!
✓ x, y를 그냥 안 쓰고 math(int x, int y)로 쓰는 이유
- 함수는 독립적인 코드 블록이기 때문에, 다른 함수와 변수 이름이 겹치더라도 영향을 받지 않도록 매개변수를 사용함.
- 매개변수는 함수에 값을 전달하고, 함수의 결과를 반환받기 위해 꼭 필요하다.
함수를 하나의 작업 공장이라고 생각한다면,
- math라는 공장은 x와 y라는 재료(입력 값)를 받아서 더 큰 값(출력 값)을 만들어 내는 가공 공장
- main은 이 공장에 재료를 주고 결과물을 받아서 larger에 저장하는 조율자 역할을 함.
C언어 함수
1. 함수란 무엇인가?함수(Function)는 특정 작업을 수행하는 코드 블록에 이름을 부여한 것이다. 함수를 사용하면 반복되는 코드의 중복을 줄이고, 프로그램의 구조를 더 명확하게 만들 수 있다. 특
omarykoo.tistory.com
예시 오류 코드 확인 점검>
1. 첫 번째 코드의 문제점
- 첫 번째 코드에서는 integer 함수와 factorial 함수가 독립적으로 존재함.
- integer 함수에서 값을 입력받아 value에 저장하지만, 그 값이 factorial 함수와 공유되지 않음. 즉, factorial 함수는 value가 뭔지 알 수 없는 상태.
- 오류의 원인은 value 변수가 integer 함수 안에서만 존재하기 때문에, factorial 함수에서 접근할 수 없다는 점.
2. 두 번째 코드에서 factorial(int n)가 작동하는 원리
factorial(int n)에서 괄호 안의 int n은 함수에 전달되는 값을 받는 변수.
- n은 함수가 호출될 때 외부에서 전달된 값을 복사해서 사용함.
- 예를 들어 factorial(5)라고 호출하면 n은 5로 초기화됨.
- 이후 for 반복문이 1부터 n까지 돌면서 result에 곱셈 결과를 누적하는 방식.
3. main 함수에서 연결되는 과정

- scanf로 입력받은 값이 변수 n에 저장됨.
- factorial(n)을 호출할 때 입력받은 n 값을 factorial 함수로 전달함.
- factorial 함수는 이 전달받은 n 값으로 연산을 수행하고, 결과를 반환(return)해 main으로 돌려줌.
- 마지막으로 printf가 결과를 출력.
헷갈릴 때 정리할 수 있는 생각법
- 함수에 들어가는 ()는 데이터를 전달하는 통로.
- factorial(5)라고 쓰면 5라는 값을 함수 안에서 사용할 수 있게 만드는 것.
- 괄호 안의 int n은 함수 안에서만 존재하는 임시 변수.
- 이 n이 바로 입력받은 값을 저장하고 사용하게 됨.
좀 더 이해를 돕기 위한 예시 코드 >

위 코드의 흐름:
- doubleNumber 함수는 x 값을 받아 두 배로 만든 후 결과를 반환.
- main 함수에서 number에 5를 넣고, doubleNumber(5)를 호출해서 두 배로 만든 값을 result에 저장.
- 최종적으로 5의 두 배인 10을 출력
'XR개발 > C언어' 카테고리의 다른 글
10_Q&A 함수원형에 대한 물음.zip (0) | 2025.02.16 |
---|---|
09_Q&A 알고리즘에 대한 물음.zip (0) | 2025.02.15 |
07_Q&A if else & switch문 비교에 대한 물음.zip (0) | 2025.02.10 |
C언어 변수 범위와 순환 호출 (0) | 2025.01.27 |
C언어 함수 (0) | 2025.01.26 |