유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
4
작성한 질문수 43
안녕하세요
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)에서 해설을 해주셨는데
9. C언어(포인터 매개변수) 19:29 문제에서
fn1(&i)에 대한 출력 값은 void 문을 참고하여 50이 들어가서 50 나오는 것이 이해가 되는데
fn2(i)에 대한 출력 값은 void 문을 참고하여 왜 60이 아닌 왜 50이 출력되는지 이해가 되지 않는데
해설 가능할까요?
영상만 듣기로는 이해가 되지 않습니다 ㅠㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. dhkdxo12님.
C언어에서 포인터와 값을 매개변수로 넘기는 함수 동작 방식에 대한 질문을 주셨군요. fn1(&i)와 fn2(i)의 매개변수 전달 방식 차이 때문에 헷갈리실 수 있습니다. 각 함수의 동작 방식을 정리해드리겠습니다.
포인터와 값에 의한 전달 차이
fn1(&i): 이 함수는i의 주소값을 함수에 전달합니다. 포인터를 통해 직접i의 실제 메모리 위치에 접근하여 값을 변경할 수 있습니다. 이렇게 되면fn1에서i의 값이 50으로 변경됩니다.fn2(i): 이 함수는 값 자체를 복사해서 함수에 전달합니다. 즉,i의 현재 값(즉,fn1이 변경한 50)이 복사되어fn2함수 내부에서 사용됩니다. 이때fn2함수 내에서 메모리 내부의i값을 변경하는 것이 아니라, 단지 복사된 값이 함수 내에서 사용되기 때문에 외부의i값에는 아무 영향을 미치지 않습니다.
따라서, fn1에서 i가 50으로 변경된 이후에 fn2에서의 호출은 복사된 ‘현재’ 값 50을 사용하여 계속 50을 출력하게 됩니다.
관련 유사 질문 참고
이해를 돕기 위해 유사한 질문과 답변이 있는 게시물을 아래에 공유드립니다:
- 함수와 포인터 변수 관계 질문: 포인터 변수와 값에 대한 함수 호출의 차이점과 이를 이용한 출력 결과에 대한 설명이 포함되어 있습니다.
이 링크를 통해 함수 호출 시 포인터와 값에 의한 차이에 대해 더 깊이 이해하실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
262 정처기 실기 C언어코딩
0
4
0
정보처리기사 262 실기 Hash(해시) 질문
0
10
2
static 변수 질문입니다.
0
20
2
파이썬 4강 질문입니다.
0
26
2
모의고사 1회 3번문제
0
53
3
41강 30:10
0
30
2
이론 공부법 질문 있습니다.
0
56
2
부모의 생성자 관련 질문
0
29
2
시험지 문제에 필기해도 되나요?
0
36
3
41강 11:23
0
33
2
4강파이썬 질문입니다
0
24
2
try-catch 핸들러명
0
34
2
36강 3:48
0
44
2
35강 18:27
0
38
2
자식 코드 내 super() 생략
0
43
2
출력질문
0
58
2
31강 4:06
0
49
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
78
3
섹션 2 - 9강 강의자료 다운로드 문제
0
58
3
29강 3:09
0
44
2
28강 6:42
0
50
2
22강 17:33
0
48
2
75강 26년 1회 코드 문제 해석 강의 질문 드립니다.
1
59
2
모의고사
0
70
1





